2 boutons ajouter

Bonjour,

C'est avec un grand crie du cœur que je vous demande de l'aide. Débutant en VBA (1 mois) je viens de "terminer" mon premier projet pour mon asso.

Sur le userrform:" frmlistes", J'ai 2 boutons de commande ajouté. Les codes sont fait par le biais de tag. Ces boutons servent a ajouter les valeur "texte" des textbox et combobox à des tableaux structurés. il y a 2 boutons car ca ajoute sur 2 feuille différente "Listes" et "Bikers".

Pour le bouton ajoutant dans "Listes", les données sont copiées en écrasant les premières cellules de chaque colonne. et pourtant, dans le code, il est bien demandé première cellule vide en partant du bas.

Et pour le bouton ajoutant dans "Bikers", bin la, rien ne se passe, malgré la msgbox positive.

Pour arrivé au userform "frmlistes", sur la feuille "Boot" cliquer sur le bouton du haut. Ca ouvre un userform "frmsaisie". Là en bas à gauche, il y a un bouton orange qui ouvrira le userform concerné.

S'il vous plais aidé moi. Ca fait 24 h que je retourne les codes dans tous les sens, que je variante, etc..... Mais toujours en vain.

Merci d'avance pour votre aide ou vos remarques "constructives".

Hello Thierry,

Nos chemins se croisent souvent en ce moment ...

Bon alors, pour ton bouton "bikers" c'est normal... tes conditions sont respectées ... tes TAG de ta partie bikers sont vides ...

Ensuite, pour la partie listes

Pour + de simplicité et t'éviter une conversion au lieu de mettre la lettre de ta colonne dans le tag, tu devrais mettre le numéro de colonne c'est + simple

Et puis une dernière chose je modifierai cette ligne :

            DL = IIf(Cells(2, CTRL.Tag).Value = "", 2, O.Cells(Application.Rows.Count, CTRL.Tag).End(xlUp).Row + 1)

en

            DL = IIf(Cells(2, CTRL.Tag).Value = "", 2, O.Cells(O.Rows.Count, CTRL.Tag).End(xlUp).Row + 1)

R@g

Merci de ta réponse. Désolé, pour les tag sans tag, a force de faire , refaire et défaire. Faute de débutant. En même temps, je le suis .

Après modification, j'ai le message :" Erreur d'exécution '1004' Erreur définie par l'application ou par l'objet.

Et ceci sur la même ligne pour chaque boutons

DL = IIf(Cells(2, CTRL.Tag).Value = "", 2, O.Cells(O.Rows.Count, CTRL.Tag).End(xlUp).Row + 1)

DL = IIf(Cells(2, CTRL.Tag).Value = "", 2, P.Cells(P.Rows.Count, CTRL.Tag).End(xlUp).Row + 1)

Tu as modifié les tag en chiffre ?

essaye ça :

DL = IIf(O.Cells(2, CTRL.Tag).Value = "", 2, O.Cells(O.Rows.Count, CTRL.Tag).End(xlUp).Row + 1)

Oui oui, j'ai bien tagué avec les num de colonne.

J'ai utilisé ton dernier code, et même message sur les 2 mêmes lignes.

Renvoie ton fichier

Voila le fichier.

Rectification, je me suis trompé ... il vaut mieux mettre la lettre dans le TAG.

je ferai plutot comme ceci au lieu de faire une boucle sur tous les control.

Private Sub btn_ajout_biker_Click()

Dim CTRL As Control
Dim DL As Integer
Dim P As Worksheet

Set P = Worksheets("Bikers")

If CB_chapter2.Value <> "" Then
        DL = IIf(P.Cells(2, CB_chapter2.Tag).Value = "", 2, P.Cells(P.Rows.Count, CB_chapter2.Tag).End(xlUp).Row + 1)
        P.Cells(DL, CB_chapter2.Tag).Value = CB_chapter2.Value
ElseIf CB_biker2.Value <> "" Then
        DL = IIf(P.Cells(2, CB_biker2.Tag).Value = "", 2, P.Cells(P.Rows.Count, CB_biker2.Tag).End(xlUp).Row + 1)
        P.Cells(DL, CB_biker2.Tag).Value = CB_biker2.Value
End If

MsgBox "Les données ont bien été ajouté aux menus déroulants", vbOKOnly + vbInformation, "CONFIRMATION"
Unload Me
End Sub

Cool, Merci.

Ca avance. J'ai pas encore essayé pour la feuille Liste mais pour biker, après test, colonne biker, la cellule est vide, mais la colonne Chapter a été renseigné.

Voilà ce que donne l'autre code

Private Sub btnajout_Click()
Dim CTRL As Control
Dim DL As Integer
Dim O As Worksheet

Set O = Worksheets("Listes")

If TB_1.Value <> "" Then
        DL = IIf(O.Cells(2, TB_1.Tag).Value = "", 2, O.Cells(O.Rows.Count, TB_1.Tag).End(xlUp).Row + 1)
        O.Cells(DL, TB_1.Tag).Value = TB_1.Value
ElseIf TB_2.Value <> "" Then
        DL = IIf(O.Cells(2, TB_2.Tag).Value = "", 2, O.Cells(O.Rows.Count, TB_2.Tag).End(xlUp).Row + 1)
        O.Cells(DL, TB_2.Tag).Value = TB_2.Value
ElseIf TB_3.Value <> "" Then
        DL = IIf(O.Cells(2, TB_3.Tag).Value = "", 2, O.Cells(O.Rows.Count, TB_3.Tag).End(xlUp).Row + 1)
        O.Cells(DL, TB_3.Tag).Value = TB_3.Value
ElseIf TB_4.Value <> "" Then
        DL = IIf(O.Cells(2, TB_4.Tag).Value = "", 2, O.Cells(O.Rows.Count, TB_4.Tag).End(xlUp).Row + 1)
        O.Cells(DL, TB_4.Tag).Value = TB_4.Value
End If

MsgBox "Les données ont bien été ajouté aux menus déroulants", vbOKOnly + vbInformation, "CONFIRMATION"
Unload Me
End Sub

Et ca plante toujours sur ca

2021 02 27 21 24 08 microsoft visual basic pour applications contacts agences b a c a france test3 2021 02 27 21 24 34 microsoft visual basic pour applications contacts agences b a c a france test3

Bonjour à tous,

J'ai lu sur un autre sujet que vous rencontriez déjà cette erreur... C'est énigmatique. Vous pouvez toutefois trouver des liens sur Internet.

En attendant, pouvez-vous essayer ce code :

Private Sub btnajout_Click()
call mamacro(Me.TB_1, Me.TB_2, Me.TB_3, Me.TB_4)
Unload Me
end sub

'CODE A PLACER DANS UN MODULE NORMAL
Sub mamacro(paramarray TB())

Dim NVL As Integer, i%
Dim O As Worksheet

Set O = Worksheets("Listes")

for i = lbound(TB) to ubound(TB)
    If TB(i).Value <> "" Then
        NVL = application.max(2, O.Cells(O.Rows.Count, TB(i).Tag).End(xlUp).Row + 1))
        O.Cells(NVL, TB(i).Tag).Value = TB(i).Value
        exit for
    end if
next i
MsgBox "Les données ont bien été ajouté aux menus déroulants", vbOKOnly + vbInformation, "CONFIRMATION"

End Sub

Cdlt,

Hello,

Enlève les tableaux structurés de ta feuille liste, mets des tableaux "normaux" sans passer par insertion - tableaux.

R@g

Merci 3 GB pour cette proposition, mais elle n'est pas concluante.

Rag02700 avant de refaire les tableau, je voudrai encore tenter quelque chose.

Peux tu me dire la suite de cette phrase

"If .Range("E" & i).Value = Editeur Then" je veux lui dire Efface cette cellule ainsi que celle de droite sur la même ligne et shifft xlup.

Merci.
Alors : 

je veux lui dire Efface cette cellule

 .Range("E" & i).ClearContents

ainsi que celle de droite sur la même ligne

.Range("E" & i).offset(,1).ClearContents

et shifft xlup

Si c'est la ligne du dessus :

.Range("E" & i-1).Clearcontents

La méthode ClearContents efface les formules et valeurs de la plage.

Si ça ne correspond pas à ton besoin regarde du côté de .Clear ou de .Delete mais le reste ne change pas

Voilà, j'ai bien avancé avec l'aide de plein plein de mon. Merci.

Mes 2 dernières cellules à effacer me ramène un bug.

Une idée? Merci

Private Sub btn_supprimer_Click()
Dim CTRL As Control
Dim DL As Integer
Dim i As Integer
Dim Editeur As String
Editeur = TB_55.Value

Set O = Worksheets("Listes")
For Each CTRL In Me.Controls
    If CTRL.Tag <> "" Then
        If CTRL.Value <> "" Then
            DL = CTRL.ListIndex + 2
            O.Cells(DL, CTRL.Tag).Delete
        End If
    End If
Next CTRL
With Worksheets("Listes")
    For i = .Range("E" & .Rows.Count).End(xlUp).Row To 2 Step -1
        If .Range("E" & i).Value = Editeur Then
            .Range("E" & i).Offset(, 1).ClearContents
    End If
   Next i
End With

MsgBox "Les données ont bien été supprimées des menus déroulants", vbOKOnly + vbInformation, "CONFIRMATION"
Unload Me
End Sub
2021 02 28 18 13 41 2021 02 28 18 14 08 microsoft visual basic pour applications contacts agences test2 xlsm arret

Re,

Comme Rag est déconnecté, je réponds à sa place...

Soit TB_55 n'existe pas, soit il faut préciser l'userform devant.

Cdlt,

Ce message ne visait pas uniquement Rag. Mais tous le monde. Tes infos sont de la même qualité. Tu m'as permis de boucler mon projet, je vais pouvoir le sécuriser et le diffuser. Merci a toi, merci a tous.

PS tu avais raison, mon objet n'existait pas. C'était TB_52. Tellement évident que je ne l'ai pas vu.

Petite Question. Mon formulaire fonctionne très bien. Je précise que je l'ai fait dans un classeur vièrge. Qu'est ce qui peut faire planter les codes une fois le formulaire importé et la feuille du classeur copiée ?

Merci.

Je n'ai bien compris la question...

En fait, je n'ai pas regardé le fichier (pour l'instant, je ne peux pas) donc je ne sais absolument pas ce qui s'y passe.

Mais plein d'éléments sont susceptibles d'occasionner des bugs, c'est difficile de penser à toutes les sources de bug potentielles.

Hello Thierry, 3GB,

Il y a beaucoup de bugs possible, les + fréquents disons lorsque tu copies ton formulaire sur un autre classeur c'est :

Le nom des feuilles ne sont pas exactement les mêmes (exemple : espace à la fin du nom ... )

les colonnes ne sont pas respectées (exemple: tu as une liste qui au lieu d'être dans la colonne A, se retrouve dans la colonne B)

Les lignes aussi (par exemple: tu commence un traitement sur un tableau en ligne 2 et puis maintenant ton tableau commence en ligne 3 ...)

Rechercher des sujets similaires à "boutons ajouter"