Essai formulaire VBA

bonjour à tous,

bon je profite d'une petite semaine de vacances pour essayer, je dis bien essayer de comprendre un peu le VBA.

je regarde quelques vidéos sur le net, plutôt bien faites d'ailleurs...

le fichier joint est juste un essai. Après avoir bien suivi la vidéo, j'ai réécris le code et je l'ai vérifié plusieurs fois, je ne comprend pas "lui" ça marche et pas moi

voici le code avec la ligne qu'il me souligne :

Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim Colonne As Integer
Dim Derligne As Integer

'il part de la dernière ligne et remonte pour trouver la ligne occupée et rajoute 1
Derligne = Sheets("BDD").Range("A65000").End(x1Up).Row + 1

'Balyae les contrôles un par un avec For et Each
For Each ctrl In UserForm1.Controls

'la valeur de "colonne" = à la valeur du Tag
Colonne = Val(ctrl.Tag)

If Colonne > 0 Then Sheets("BDD").cell(Derligne, Colonne) = ctrl

Next
End

End Sub

merci d'avance

Francky

59new-bdd.xlsm (23.46 Ko)

Bonjour,

Voir modifs ci-dessous:

Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim Colonne As Integer
Dim Derligne As Integer

    'il part de la dernière ligne et remonte pour trouver la ligne occupée et rajoute 1
    Derligne = Worksheets("BDD").Cells(Rows.Count, 1).End(xlUp).Row + 1
    'Balyae les contrôles un par un avec For et Each
    For Each ctrl In UserForm1.Controls
        'la valeur de "colonne" = à la valeur du Tag
        Colonne = Val(ctrl.Tag)
        If Colonne > 0 Then Worksheets("BDD").Cells(Derligne, Colonne) = ctrl
    Next

End Sub

Bonjour et merci Jean Eric,

bon ça ne marche toujours pas.

voilà les messages :

sub

puis voici ce qui me montre comme ligne dans le code :

erreur

Bon, je pense qu'il ne dis pas tout dans sa vidéo pour avoir une telle différence même si je reconnais mon erreur sur "Cells"

Francky

Bonjour

Bonjour Jean-Eric

Tu as un 1 (le chiffre 1) dans le code : xlUp

Derligne = Sheets("BDD").Range("A65000").End(x1Up).Row + 1

Re,

Bonjour Banzai64,

je n'avais pas vu le 1 ald l, mais j'avais modifié le code pour la dernière ligne de la colonne A.

On n'est plus sous Excel 2003, mais sous Excel 2007 et +. Code à privilégier :

Derligne = Worksheets("BDD").Cells(Rows.Count, 1).End(xlUp).Row + 1

Cdlt.

ça y'est presque, il y a juste un souci, il insère la ligne à la troisième au lieu de la deuxième qui est vide !

Sinon, d'après ce que je comprends, c'est que le code était fait pour une version antérieur à la mienne ?

merci d'avance,

Francky

Private Sub CommandButton1_Click()

Dim ctrl As Control
Dim Colonne As Integer
Dim Derligne As Integer

'il part de la dernière ligne et remonte pour trouver la ligne occupée et rajoute 1
Derligne = Worksheets("BDD").Cells(Rows.Count, 1).End(xlUp).Row + 1

'Balyae les contrôles un par un avec For et Each
For Each ctrl In UserForm1.Controls

'la valeur de "colonne" = à la valeur du Tag
Colonne = Val(ctrl.Tag)

If Colonne > 0 Then Sheets("BDD").Cells(Derligne, Colonne) = ctrl

Next
End

End Sub

bon, j'ai enlevé le "+ 1" et ça marche, mais du coup au vu des explications que j'avais je comprends plus le code, car il devait trouver la ligne occupé et faire +1

'il part de la dernière ligne et remonte pour trouver la ligne occupée et rajoute 1
Derligne = Worksheets("BDD").Cells(Rows.Count, 1).End(xlUp).Row

merci à vous deux,

Francky

Re-bonjour à tous les deux,

bon ben Banzai tu avais raison pour le "1" à la place du "l" j'ai rettapé le code d'origine et ça marche.

Private Sub CommandButton1_Click()

Dim ctrl As Control
Dim Colonne As Integer
Dim Derligne As Integer

'il part de la dernière ligne et remonte pour trouver la ligne occupée et rajoute 1
Derligne = Sheets("BDD").Range("A65000").End(xlUp).Row + 1

'Balyae les contrôles un par un avec For et Each
For Each ctrl In UserForm1.Controls

'la valeur de "colonne" = à la valeur du Tag
Colonne = Val(ctrl.Tag)

If Colonne > 0 Then Sheets("BDD").Cells(Derligne, Colonne) = ctrl

Next
End

End Sub

Encore merci à tous les deux et bon dimanche,

Francky

Rechercher des sujets similaires à "essai formulaire vba"