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.
A voir également:
Renseigner un tableau à partir de Userform (VBA sous Exl2010)
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é
L = 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
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é
enlevez le "." devant Range a la ligne L=
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é
la ligne d'origine etait:
la par contre il faut le "." devant range
Et comme ca c'est encore mieux
Du coup j'ai un souci sur le End If de la fin. Il me dit qu'il ne peut fermer sans avoir eu un If ouvert quelque part avant