Code Userform

titine06

XLDnaute Junior
Salut le forum !

Je me lance dans les userform, et n'étant que débutante celà me donne beaucoups de mal.:(

J'ai construit la forme du userform, il ne me reste plus qu'a y assossier des codes pour le rendre fonctionnel.

J'ai nomé chaque action voulu par un numéro 1-21

Par ailleur, j'ai construit une base de donnée où j'aimerai que ces informations se stockent, j'ai nomé chaque collonne par un numéro (1-21)

voici la liste des actions que je souhaiterai qui soit effectué:

* 1,7,8,9,10,11,12,13,14,15,16,19,20 = les données doivent être mise identiquement en dessous de la collonne correspondante.

* 6,21 = mettre une croix en dessous de la collone correspondante à la selection (choix unique entre les 2)

* 2,3,4,5 = mettre une(des) croix en dessous de(s) la collonne correspondante à la selection (il peut y avoir un choix multiple)

* et une dernière case aparaissant sur le use forme que je n'ai pas crée (ne sachant pas comment faire ni si c'est possible) où il y aura la date =AUJOURDHUI() . J'aimerai que cette date aille dans la colonne 18.

J'aimerai que tout ceci s'effectue lorsque j'appuie sur le bouton figurant sur le userform.


Donc voilà, j'ai plusieurs sortes de userform à faire, et je vous demande de l'aide pour celui ci, afin que je puisse reproduire la démarche seule pour les autres.

Merci d'avance.
 

Pièces jointes

  • userform1.xls
    41 KB · Affichages: 72
  • userform1.xls
    41 KB · Affichages: 67
  • userform1.xls
    41 KB · Affichages: 70

Hellowa

XLDnaute Junior
Re : Code Userform

Bonjour titine,
Pourrai tu nous commenter directement sur ton fichier et donner des noms un peu plus explicites à tes labels et aux collones de ton tableaux s'il te plait!
Parce que comme ça je sais pas vous, mais j'ai un peu de mal...
Cordialement,
Eloi
 

JNP

XLDnaute Barbatruc
Re : Code Userform

Bonjour le forum :),
Effectivement, pas forcément évident de tout suivre...
Un début de réponse, à condition de renommer les TextBox de 1 à 20 pour être en correspondance avec les colonnes, et de remettre la colonne 21 à sa place :
Code:
Private Sub CommandButton2_Click()
Dim DernièreLigne%
DernièreLigne = Range("D65536").End(xlUp).Row + 1
Dim I%
For I = 1 To 20
On Error Resume Next
Cells(DernièreLigne, I + 3) = Me.Controls("TextBox" & I)
On Error GoTo 0
Next I
End Sub
Bonne journée :cool:
 

titine06

XLDnaute Junior
Re : Code Userform

Bonjour Hellowa, Bonjour JNP,

Merci pour vos réponses.

@Hellowa: désolés pour ma mauvaise explication, j'ai refet un petit fichier un peu plus explicatif, et j'ai modifié les Label.

@JNP: super code ! il m'a résolu les 3/4 de mon problème !
j'ai suivi tes consignes : renommer les textbox
merci beaucoup !

Ca fonctionne bien, par contre je n'ai pas avancé sur les cases à cocher ainsi que les rond a pointer, ainsi que un cadrant de date à ajouter...
encore une fois j'explique mal, mais mon fichier joint est beaucoups plus explicatif je pense.

merci d'avance pour vos aides & conseil !

titine
 

Pièces jointes

  • userform1.xls
    47.5 KB · Affichages: 74
  • userform1.xls
    47.5 KB · Affichages: 69
  • userform1.xls
    47.5 KB · Affichages: 71

JNP

XLDnaute Barbatruc
Re : Code Userform

Re :),
En créant un label (ici Label47), tu récupèreras ta date
Code:
Private Sub UserForm_Initialize()
Label47 = Now
End Sub
Pour envoyer les résultats, à ajouter dans la première macro
Code:
If OptionButton7 = True Then Cells(DernièreLigne, 9) = "X"
If CheckBox8 = True Then Cells(DernièreLigne, 5) = "X"
Cells(DernièreLigne, 23) = Label47
à complèter pour optionbutton8 et 9, ainsi que pour checkbox8, etc.
Même conseil que pour les textbox, renomment les, ce sera plus clair. Si tu en as beaucoup, tu peux faire une boucle comme pour les textbox, mais pour 3 ou 4, je pense pas que ce soit indipensable.
Bonne continuation :cool:
 

Hellowa

XLDnaute Junior
Re : Code Userform

Je rajouterai juste JPN, elle souhaitait qu'une seule des 3 conditionalbox ne soient séléctionnable, j'ai donc fait 3 conditions if,
Et tu viens, en 3 ligne de résumer que que j'ai fait en une demie page...
J'ai encore énormément à apprendre!!
 

JNP

XLDnaute Barbatruc
Re : Code Userform

Re :cool:,
Petite colision avec Hellowa :p.
Hellowa : Ton code est propre. Par contre, tu n'as pas besoin de créer une bascule avec les optionbutton, c'est automatique. L'utilisation d'une cellule barrée est esthétiquement intéressante, mais sera plus difficile à utiliser par la suite qu'un "X" (pour un NB.SI par exemple) pour analyser le tableau. La croix sur la case peut être conservée suivant les besoins, mais là, je pense qu'il y a de l'économie de ligne à faire avec une sub
Code:
Sub Croix()
With Selection.Borders(xlDiagonalDown)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
With Selection.Borders(xlDiagonalUp)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
End Sub
et après chaque sélection
Code:
Call Croix
et pour un débutant, je trouve ça déjà bien ;).
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : Code Userform

Re :),
Et si je peux me permettre un petit conseil, évite les .Select / Selection. qui alourdissent, et le code, et son exécution. Mon exemple de sub pour la présentation pourrait être utilisé comme ceci
Code:
Sub Croix(Cellule As Range)
With Cellule.Borders(xlDiagonalDown)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
With Cellule.Borders(xlDiagonalUp)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
End Sub
avec un appel du type
Code:
Croix (Cells(1, 1))
Call n'est pas obligatoire non plus, mais aide à la lisibilité du code ;).
Autrement, essaie de toujours charger les fichier sur le forum, quitte à les zipper, plutôt que d'utiliser cijoint ou autre qui ne conserve les fichier qu'un temps limité et qui ne seront plus là pour une recherche ultérieure :rolleyes:.
Bon viaduc :cool:
 

Hellowa

XLDnaute Junior
Re : Code Userform

J'ai découvert il ya peu les outils Select, et With Selection
Et a vrai dire, je trouvais ça génial, seulement celà m'a apporté beaucoup de bug.
Actuellement lorsque je les retrouve dans des parties de macros que j'enregistre automatiquement, je ne sais pas trop comment me passer de l'outil séléction!
Merci de cet éclairage!
 

titine06

XLDnaute Junior
Re : Code Userform

re !!

oulala, j'allai répondre aux premiers post et d'un coup ca s'enchaine ! lol

bon merci à vous pour votre implication ! ca me touche beaucoups !

débutant débutant !! pas tant que ca Hellowa ;)

J'ai testé ton fichier, l'idée des cellules barré est une super idée mise à part que vu que je compte utilisé des formules par la suite, ca risque d'etre difficil à différencier alors que "X" est facilement reconnaissable.

ensuite j'ai testé, mais ca m'a dit que:
Code:
Cells(Lastlig, 23).Value = Date
que Date n'est pas reconnu :(

Par la suite, j'ai testé le code de JNP !
Super pour la date qui s'affiche ! Mais j'ai un problème, je n'arrive pas à permettre l'écriture.... ridicule de ma part car vu comment vous m'avez maché le travail :eek:

voici les modifications que j'ai faites:
Code:
Option Explicit
Sub Bouton3_QuandClic()

    Dim CptLigSrc As Integer, LigDst As Integer
    Dim ColInitDst As Byte
    Dim Rech As Variant
    
    For CptLigSrc = 2 To Sheets("Saisie").Range("D1").End(xlDown).Row
        Set Rech = Sheets("BD Suivi").Rows(1).Find(what:=Sheets("Saisie").Range("E" & CptLigSrc).Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not Rech Is Nothing Then
            ColInitDst = Rech.Column - 3

            
            Set Rech = Sheets("BD Suivi").Columns(1).Find(what:=Sheets("Saisie").Range("D" & CptLigSrc).Value, LookIn:=xlFormulas, lookat:=xlWhole)
            If Not Rech Is Nothing Then
                LigDst = Rech.Row
                Sheets("BD Suivi").Cells(LigDst, ColInitDst).Value = Sheets("Saisie").Range("F" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 1).Value = Sheets("Saisie").Range("G" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 2).Value = Sheets("Saisie").Range("H" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 3).Value = Sheets("Saisie").Range("I" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 5).Value = Sheets("Saisie").Range("J" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 6).Value = Sheets("Saisie").Range("K" & CptLigSrc).Value
            
            End If
        End If
      
    Next CptLigSrc
                If OptionButton7 = True Then Cells(DernièreLigne, 9) = "X"
                If OptionButton8 = True Then Cells(DernièreLigne, 10) = "X"
                If OptionButton9 = True Then Cells(DernièreLigne, 11) = "X"
                If CheckBox6 = True Then Cells(DernièreLigne, 5) = "X"
                If CheckBox7 = True Then Cells(DernièreLigne, 6) = "X"
                If CheckBox8 = True Then Cells(DernièreLigne, 7) = "X"
                If CheckBox9 = True Then Cells(DernièreLigne, 8) = "X"
                Cells(DernièreLigne, 23) = Label47
End Sub

auriez vous une idée d'ou vient le problème? car aucunes des dernières modifications ne fonctionne .. il ne se passe rien !

merci d'avance :)


à vous lire
 

titine06

XLDnaute Junior
Re : Code Userform

PS:

oups oups, j'avais completement zapper, j'aimerai rendre la saisie d'un TextBox obligatoire pour le lancement de la macro .. j'avais completement zapper :S ....
et que si ce textbox n'est pas remplis, ca ne lance pas la macro, mais un message du genre: vueillez remplir ce champ

comment puis-je faire svp ?
 

JNP

XLDnaute Barbatruc
Re : Code Userform

Re :),
Il me semble avoir vu sur un post que Date n'était pas reconnu par d'anciennes versions.
Par contre, je ne comprend rien à tes modifications :D...
A quoi sert
Code:
    For CptLigSrc = 2 To Sheets("Saisie").Range("D1").End(xlDown).Row
        Set Rech = Sheets("BD Suivi").Rows(1).Find(what:=Sheets("Saisie").Range("E" & CptLigSrc).Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not Rech Is Nothing Then
            ColInitDst = Rech.Column - 3
 
 
            Set Rech = Sheets("BD Suivi").Columns(1).Find(what:=Sheets("Saisie").Range("D" & CptLigSrc).Value, LookIn:=xlFormulas, lookat:=xlWhole)
            If Not Rech Is Nothing Then
                LigDst = Rech.Row
                Sheets("BD Suivi").Cells(LigDst, ColInitDst).Value = Sheets("Saisie").Range("F" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 1).Value = Sheets("Saisie").Range("G" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 2).Value = Sheets("Saisie").Range("H" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 3).Value = Sheets("Saisie").Range("I" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 5).Value = Sheets("Saisie").Range("J" & CptLigSrc).Value
                Sheets("BD Suivi").Cells(LigDst, ColInitDst + 6).Value = Sheets("Saisie").Range("K" & CptLigSrc).Value
 
            End If
        End If
 
    Next CptLigSrc
C'est un code de recherche :confused: et rien ne fait référence à l'USF, tout est de la copie de la feuille Saisie vers la feuille BD Suivi !!!
Tu as du (ou alors je vais me coucher toiut de suite) sauter un épisode :p.
A +
 

JNP

XLDnaute Barbatruc
Re : Code Userform

Re :),
PS: j'aimerai rendre la saisie d'un TextBox obligatoire pour le lancement de la macro .. et que si ce textbox n'est pas remplis, ca ne lance pas la macro, mais un message du genre: vueillez remplir ce champ
avec ça au début de la macro
Code:
If TextBox1 = "" Then
MsgBox "Vous devez remplir TextBox1"
Exit Sub
End If
Mais comme dit précédemment, y a pas que ça que tu as du zapper :p.
A + :cool:
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87