Renseigner un tableau à partir de Userform (VBA sous Exl2010)
Yanderuelle
Messages postés
4
Statut
Membre
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis débutant VBA et je furète pas mal sur la toile.
Pour l'instant j'ai un tableau de saisie de factures 'TableauFactures' sur 9 Colonnes avec soit du texte, soit un Menu Déroulant. Cela marche très bien.
Mon projet est d'automatiser la saisie à travers une UserForm. A travers les exemples trouvés sur le net, j'ai correctement dimensionné la Form et placé les différents boutons, ComboBox et TextBox. Leurs numéros ne se suivant pas, mais après vérification, la tabulation est correcte.
Malgré la foultitude d'exemples trouvés, j'ai soit un pb de variable déclarée, soit un souci pour trouver la dernière ligne vide et ensuite décaler les cellules par la droite pour déclarer l'origine de l'information saisie (la variable L).
Pour l'instant j'ai ce code qui se déclenche lorsque on clique sur le bouton 'Nouvelle Facture'
__________________________________________________________________
'Pour le bouton Nouvelle facture
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox(" Confirmez-vous l'insertion de cette nouvelle facture ? ", vbYesNo, " Demande de confirmation d'ajout ") = vbYes Then
L = .Range("A" & .Rows.Count).End(x1Up).Row + 1
'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range(" A " & L).Value = TextBox7
Range(" B " & L).Value = ComboBox2
Range(" C " & L).Value = TextBox1
Range(" D " & L).Value = ComboBox3
Range(" E " & L).Value = TextBox3
Range(" F " & L).Value = TextBox4
Range(" G " & L).Value = ComboBox4
Range(" H " & L).Value = ComboBox5
Range(" I " & L).Value = TextBox8
End If
End Sub
__________________________________________________________________
Lorsque je teste ce bout, j'ai un message d'erreur de compilation en Variable Non définie sur (x1Up) et je n'arrive pas à en sortir.
Si je trouve une solution qui passe, ensuite j'ai un souci de Range dès la première ligne de déclaration. J'ai essayé avec la fonction Cells, mais pas trouvé la bonne syntaxe.
Merci pour vos conseils.
Je suis débutant VBA et je furète pas mal sur la toile.
Pour l'instant j'ai un tableau de saisie de factures 'TableauFactures' sur 9 Colonnes avec soit du texte, soit un Menu Déroulant. Cela marche très bien.
Mon projet est d'automatiser la saisie à travers une UserForm. A travers les exemples trouvés sur le net, j'ai correctement dimensionné la Form et placé les différents boutons, ComboBox et TextBox. Leurs numéros ne se suivant pas, mais après vérification, la tabulation est correcte.
Malgré la foultitude d'exemples trouvés, j'ai soit un pb de variable déclarée, soit un souci pour trouver la dernière ligne vide et ensuite décaler les cellules par la droite pour déclarer l'origine de l'information saisie (la variable L).
Pour l'instant j'ai ce code qui se déclenche lorsque on clique sur le bouton 'Nouvelle Facture'
__________________________________________________________________
'Pour le bouton Nouvelle facture
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox(" Confirmez-vous l'insertion de cette nouvelle facture ? ", vbYesNo, " Demande de confirmation d'ajout ") = vbYes Then
L = .Range("A" & .Rows.Count).End(x1Up).Row + 1
'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range(" A " & L).Value = TextBox7
Range(" B " & L).Value = ComboBox2
Range(" C " & L).Value = TextBox1
Range(" D " & L).Value = ComboBox3
Range(" E " & L).Value = TextBox3
Range(" F " & L).Value = TextBox4
Range(" G " & L).Value = ComboBox4
Range(" H " & L).Value = ComboBox5
Range(" I " & L).Value = TextBox8
End If
End Sub
__________________________________________________________________
Lorsque je teste ce bout, j'ai un message d'erreur de compilation en Variable Non définie sur (x1Up) et je n'arrive pas à en sortir.
Si je trouve une solution qui passe, ensuite j'ai un souci de Range dès la première ligne de déclaration. J'ai essayé avec la fonction Cells, mais pas trouvé la bonne syntaxe.
Merci pour vos conseils.
1 réponse
-
Bonjour,
ce n'est pasx1Up
maisxlUp
avec un l minuscule pas le chiffre 1-
Rhooo purée merci. Le pire c'est que je l'avais déjà vu en début d'après midi. Mais à force de chercher des solutions, j'ai refais l'erreur. Faut dire que visuellement, c'est super proche.
Maintenant il me donne une erreur de Référence Incorrecte ou non qualifiée sur le Rows juste avant sur la même ligne. J'ai enlevé le Point qui est avant le Rows.... Cela semble fonctionner
Mais comme indiqué dans mon premier message, ensuite je bloque sur le Range avec une erreur d'exécution 1004, la méthode Range de l'Objet '_Global' a échoué -
-
Pour donner cela
L = Sheets("TableauFactures") Range("A" & Rows.Count).End(xlUp).Row + 1
?
Aussitôt la ligne passe en rouge "Attendu Fin d'instruction" sur le Range
Si je supprime toute la partie de déclaration de la Sheets("TableauFactures"), puisque de toutes les façons je suis dessus, au test de débogage il souligne en jaune la première Ligne de
Range ("A " & L ). Value = TextBox7
Toujours en erreur d'exécution 1004, la méthode Range de l'Objet '_Global' a échoué -
Bonjour,
la ligne d'origine etait:L = .Range("A" & .Rows.Count).End(x1Up).Row + 1
la par contre il faut le "." devant rangeL = Sheets("TableauFactures").Range("A" & Rows.Count).End(xlUp).Row + 1
Et comme ca c'est encore mieux
Private Sub CommandButton1_Click() Dim L As Integer If MsgBox(" Confirmez-vous l'insertion de cette nouvelle facture ? ", vbYesNo, " Demande de confirmation d'ajout ") = vbYes Then With Sheets("TableauFactures") L = .Range("A" & .Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide .Range(" A " & L).Value = TextBox7 .Range(" B " & L).Value = ComboBox2 .Range(" C " & L).Value = TextBox1 .Range(" D " & L).Value = ComboBox3 .Range(" E " & L).Value = TextBox3 .Range(" F " & L).Value = TextBox4 .Range(" G " & L).Value = ComboBox4 .Range(" H " & L).Value = ComboBox5 .Range(" I " & L).Value = TextBox8 End If End With End Sub -
-