Excel macro : Userform, frame , bouton option

wt8283

XLDnaute Nouveau
Bonjour a tous,

Je debute en programmation et j'ai créé un userform avec des text box, combobox... et surtout 3 frames avec des optionbutton dans chacun d'entre eux.

J'ai écrit des codes qui ne font pas tout a fait ce que je souhaite avoir :
J'ai un tableau dans une feuille "données" où il y a plusieurs colonnes de A-W et de lignes.
A cet instant, les textbox, combobox..,sauf le frame, s’ajoutent en fin de tableau et le resultat de mon frame1 se met en début de tableau colonne M2;

La logique voudrait que, en cliquant sur le bouton ajout de dossier, le résultat des Frame, les Textbox.... de mon USF s'insère en début de tableau. C'est là où tout bug.

J'ai le même problème quand j'active le bouton modifier ou le bouton rechercher pour récupérer les données.
Je pense que je n'en suis pas loin,
Auriez vous une solution ?
Merci de votre aide

Vous trouverez ci dessous le code

'Pour le formulaire
Private Sub nouveaudossier_Click()
Application.Sheets("DONNEES").Activate
Dim premiereligne As Integer
If MsgBox("confirmez vous l'ajout du nouveau dossier?", vbYesNo, "Confirmation") = vbYes Then
premiereligne = Sheets("DONNEES").Range("A456541").End(xlUp).Row + 1
Cells(premiereligne, 1) = nomdossier.Value
Cells(premiereligne, 2) = TextBox2.Value
Cells(premiereligne, 3) = TextBox3.Value
Cells(premiereligne, 4) = refar.Value
Cells(premiereligne, 5) = refcom.Value
Cells(premiereligne, 6) = TextBox6.Value
Cells(premiereligne, 7) = ComboBox1.Value
Cells(premiereligne, 8) = TextBox8.Value
Cells(premiereligne, 9) = ComboBox2.Value
Cells(premiereligne, 10) = TextBox10.Value
Cells(premiereligne, 11) = TextBox11.Value
Cells(premiereligne, 12) = TextBox12.Value
Cells(premiereligne, 23) = TextBox13.Value

'Activer un frame dans uersforme
Dim EtatDuDossier As Control, y As Integer
For Each y In Frame1.Controls
If y.Value = True Then
Sheets("DONNEES").Range("M2").Value = y.Caption
EtatDuDossier = EtatDuDossier + 1
End If
Next

End If
End Sub

'Pour le bouton Modifier
Private Sub modifier_Click()

Dim I As Integer
Sheets("DONNEES").Select
no_ligne = nomdossier.ListIndex + 2
If nomdossier.Value = "" Then
MsgBox ("Etes-vous certain de vouloir modifier ce client?")
Else
Cells(no_ligne, 1) = nomdossier
Cells(no_ligne, 2) = TextBox2
Cells(no_ligne, 3) = TextBox3
Cells(no_ligne, 4) = refar
Cells(no_ligne, 5) = refcom
Cells(no_ligne, 6) = TextBox6
Cells(no_ligne, 7) = ComboBox1
Cells(no_ligne, 8) = TextBox8
Cells(no_ligne, 9) = ComboBox2
Cells(no_ligne, 10) = TextBox10
Cells(no_ligne, 11) = TextBox11
Cells(no_ligne, 12) = TextBox12
'Cells(no_ligne, 13) = Frame1
Cells(no_ligne, 23) = TextBox13
End If
End Sub

'Pour rechercher nom dossier
Private Sub CommandButton3_Click()
Application.Sheets("DONNEES").Activate
Dim no_ligne As Integer
no_ligne = nomdossier.ListIndex + 2
nomdossier.Value = Cells(no_ligne, 1).Value
TextBox2.Value = Cells(no_ligne, 2).Value
TextBox3.Value = Cells(no_ligne, 3).Value
refar.Value = Cells(no_ligne, 4).Value
refcom.Value = Cells(no_ligne, 5).Value
TextBox6.Value = Cells(no_ligne, 6).Value
ComboBox1.Value = Cells(no_ligne, 7).Value
TextBox8.Value = Cells(no_ligne, 8).Value
ComboBox2.Value = Cells(no_ligne, 9).Value
TextBox10.Value = Cells(no_ligne, 10).Value
TextBox11.Value = Cells(no_ligne, 11).Value
TextBox12.Value = Cells(no_ligne, 12).Value
'Frame1.Caption = Cells(no_ligne, 13).Caption
' If y.Value = True Then
' Sheets("DONNEES").Range("M2").Value = y.Caption
' End If
TextBox13.Value = Cells(no_ligne, 23).Value

End Sub
'Pour rechercher ref ar
Private Sub CommandButton4_Click()
Application.Sheets("DONNEES").Activate
Dim no_ligne As Integer
no_ligne = refar.ListIndex + 2
nomdossier.Value = Cells(no_ligne, 1).Value
TextBox2.Value = Cells(no_ligne, 2).Value
TextBox3.Value = Cells(no_ligne, 3).Value
refar.Value = Cells(no_ligne, 4).Value
refcom.Value = Cells(no_ligne, 5).Value
TextBox6.Value = Cells(no_ligne, 6).Value
ComboBox1.Value = Cells(no_ligne, 7).Value
TextBox8.Value = Cells(no_ligne, 8).Value
ComboBox2.Value = Cells(no_ligne, 9).Value
TextBox10.Value = Cells(no_ligne, 10).Value
TextBox11.Value = Cells(no_ligne, 12).Value
TextBox12.Value = Cells(no_ligne, 13).Value
End Sub
'Pour rechercher nom dossier
Private Sub CommandButton5_Click()
Application.Sheets("DONNEES").Activate
Dim no_ligne As Integer
no_ligne = refcom.ListIndex + 2
nomdossier.Value = Cells(no_ligne, 1).Value
TextBox2.Value = Cells(no_ligne, 2).Value
TextBox3.Value = Cells(no_ligne, 3).Value
refar.Value = Cells(no_ligne, 4).Value
refcom.Value = Cells(no_ligne, 5).Value
TextBox6.Value = Cells(no_ligne, 6).Value
ComboBox1.Value = Cells(no_ligne, 7).Value
TextBox8.Value = Cells(no_ligne, 8).Value
ComboBox2.Value = Cells(no_ligne, 9).Value
TextBox10.Value = Cells(no_ligne, 10).Value
TextBox11.Value = Cells(no_ligne, 12).Value
TextBox12.Value = Cells(no_ligne, 13).Value
End Sub

'Pour le bouton Quitter
Private Sub quitter_Click()
Unload Me
End Sub
 
Dernière édition:

bbb38

XLDnaute Accro
Re : Excel macro : Userform, frame , bouton option

Bonsoir wt8283, le forum,
premiereligne = Sheets("DONNEES").Range("A456541").End(xlUp).Row + 1
L’instruction ci-dessus donne la dernière ligne vide de la colonne A et non le n° de la ligne au début du tableau (s’agit-il de la ligne 3 ou 4 ou… etc…). Sans un petit fichier exemple, il est parfois difficile de répondre.
Cordialement,
Bernard
 

bbb38

XLDnaute Accro
Re : Excel macro : Userform, frame , bouton option

Bonsoir wt8283, le forum,
Peut-on modifier la présentation de ton formulaire ? Pour ma part, je préfère utiliser des TextBox pour l’ajout de dossiers, et des ListBox pour la recherche.
Quelle option sera la plus utilisée (ajout, consultation ou modification) ?
Cordialement,
Bernard
 

wt8283

XLDnaute Nouveau
Re : Excel macro : Userform, frame , bouton option

Bonsoir,

Oui, il est possible de modifier le formulaire. Les trois fonctions sont très utilisées. Il m'est difficile de savoir si je vais plus utiliser l'une que l'autre mais je pense que se sont les boutons modifier et rechercher qui vont etre le plus utilisés.
J'ai utilisé les combobox car je ne suis pas figer a une liste déroulante. Avec la combo je peux ajouter du texte alors qu'il n'ai pas référencé dans mon tableau ou dans une liste déroulante de choix bloquée.

Bonne soirée,
 

bbb38

XLDnaute Accro
Re : Excel macro : Userform, frame , bouton option

Bonsoir wt8283, JM27, le forum,
Ci-incluse une ébauche de fichier. J’ai repris un classeur en ma possession, pour l’adapter à ton fichier (à tester, car je peux avoir omis des rectifications).
Pour poursuivre, j’ai mis quelques observations sur la feuille « SAISIE ».
Cordialement,
Bernard
 

Pièces jointes

  • FORMULAIRE4.xlsm
    48.1 KB · Affichages: 60