Macro, userform

candido57

XLDnaute Occasionnel
Je n’arrive pas a faire fonctionner la saisie auto.

Pouvez vous m’aider?

J’ai essayé de m’aventurer dans les macros , mais rien à faire ça ne rentre pas.

Qui pourrait me corriger ma macro.

Merci
 

Pièces jointes

  • Copy of 111-4.xls
    694 KB · Affichages: 51

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro, userform

Bonsoir Candido, bonsoir le forum,

En pièce jointe ton fichier modifié. J'ai attribué à la propriété Tag de chaque contrôle une valeur qui correspond au numéro de la colonne dans laquelle la valeur doit être écrite. Cela permet de reporter les données à l'aide d'une boucle. Sans cette valeur le code ne fonctionnera pas... L'alimentation des deux ComboBoxes est faite dynamiquement et leur propriété RowSource supprimée.
Le code :
Code:
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim d As Object 'déclare la variable d (onglet Datas)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dn As Integer 'déclare la variable dn (Dernier Numéro)

Set d = Sheets("Datas") 'définit l'onglet d
dl = d.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
Set pl = d.Range("A2:A" & dl) 'définit la plage pl (colonne A)
Me.ComboBox1.List = pl.Value 'alimente dynamiquement la ComboBox1
dl = d.Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 3 (=C)
Set pl = d.Range("C2:C" & dl) 'définit la plage pl (colonne C)
Me.ComboBox2.List = pl.Value 'alimente dynamiquement la ComboBox2
dn = Application.WorksheetFunction.Max(b.Columns(1)) 'définit le dernier numéro utilisé (le plus grand)
Me.TextBox15.Value = dn + 1 'incrémente le dernier numéro et place la valeur dans la TextBox15
Me.TextBox14.Value = Format(Date, "dd/mm/yyyy") 'place la date dans la TextBox14
End Sub
Code:
Private Sub CommandButton1_Click() 'bouton "Valider"
Dim b As Object 'déclare la variable b (onglet Base)
Dim plv As Long 'déclare la variable plv (Première Ligne Vide)
Dim ctrl As Control 'déclare la variable ctrl (ConTRôLe)
Set b = Sheets("Base") 'définit l'onglet b
plv = b.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1 'définit la première ligne vide
For Each ctrl In Me.Controls 'boucle sur tous les contrôles ctrl de l'UserForm1
    'condition : si le contrôle est une TextBox ou une ComboBox
    If TypeOf ctrl Is MSForms.TextBox Or TypeOf ctrl Is MSForms.ComboBox Then
        'place la valeur du contrôle dans la ligne plv en fonction de la colonne renseignée par la propriété "TAG"
        b.Cells(dl, CByte(ctrl.Tag)).Value = ctrl.Value
    End If 'fin de la condition
Next ctrl 'prochain contrôle de la boucle
Unload Me 'vide et ferme l'UserForm
UserForm1.Show 'affiche l'Userform1
End Sub
Code:
Private Sub CommandButton2_Click()
Unload Me 'vide et ferme l'UserForm
End Sub
Le fichier :
 

Pièces jointes

  • Candido_v01.xls
    641.5 KB · Affichages: 57

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro, userform

Bonsoir Candido, bonsoir le forum,

Oui désolé, j'avais déplacé la variable b et pas testé. En pièce jointe la version 2 corrigée.
 

Pièces jointes

  • Candido_v02.xls
    648.5 KB · Affichages: 52

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro, userform

Bonjour le fil, bonjour le forum,

Je ne sais pas à qui tu t'adresses dans ton dernier post mais il y avait encore un bug, en effet, dans ma version. En pièce jointe la version 3...
 

Pièces jointes

  • Candido_v03.xls
    654 KB · Affichages: 56

candido57

XLDnaute Occasionnel
Re : Macro, userform

Super , merci beaucoup.

J’ai réussi à trouver le problème avant de voir votre réponse.


Encore une petite question. J’aimerais vraiment apprendre écrire une macro.
Est-ce qu’il y a un livre ou CD pour apprendre facilement ?
Car j’essai de comprendre, mais je ne connais pas la logique de tous ces codes.

Encore un grand merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro, userform

Bonjour Candido, bonjour le forum,

Difficile de te conseiller un livre. J'ai utilisé au début "Visual Basic - Excel 97" (je ne sais plus ni le titre exact, ni l'éditeur) mais je n'y comprenais absolument rien, n'ayant aucune base de programmation. Finalement c'est ici que j'ai pratiquement tout appris. Le bouquin m'a un peu servi après avoir acquis quelques bases mais pas tant que ça... Ce sont les éminents membres de ce forum qui m'ont permis de progresser rapidement.
 

Statistiques des forums

Discussions
312 500
Messages
2 089 005
Membres
104 003
dernier inscrit
adyady__