Renseigner un tableau à partir de Userform (VBA sous Exl2010)

Yanderuelle Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 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.

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

ce n'est pas
x1Up
mais
xlUp
avec un l minuscule pas le chiffre 1
0
Yanderuelle Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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é
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Yanderuelle Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

enlevez le "." devant Range a la ligne L=
0
Yanderuelle Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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é
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Yanderuelle Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

la ligne d'origine etait:
L = .Range("A" & .Rows.Count).End(x1Up).Row + 1 


la par contre il faut le "." devant range
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
0
Yanderuelle Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
Merci. Mais cela ne semble pas fonctionner. Le premier If est fermé par le Then de la demande de confirmation pour créer une nouvelle facture.

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
0