Ajouter du texte selon deux boutons dans un Userform

Bonjour,

Lorsque le code "406" est ajouté à la colonne "CODE" dans mon fichier, j'ai programmé une macro qui fait apparaître un userform permettant de choisir entre deux transporteurs.

19092309545514085

Toutefois, je n'arrive pas à programmer la Macro qui permettrait d'ajouter à la colonne "COMMENTAIRES" de mon fichier le nom du transporteur voulu en fonction du choix fait sur l'Userform. Si on clique sur UPS, cela inscrit "Transporteur est UPS" dans la colonne commentaires... et vice versa pour DHL.

Je vous joins mon fichier de test

Je vous remercie par avance pour votre aide

Baptiste.

Bonjour,

ton userform se déclenche quand tu valides 406 dans une cellule …. ce qui veut dire que la cellule active sera celle du dessous.

Ton code vba doit donc chercher la ligne active et retirer 1. ensuite écrire sur cette ligne en colonne 13.

Nota si un utilisateur clic sur une autre case avant de cliquer sur le nom du transporteur alors l'info n'ira pas dans ligne et colonne voulue.

Bonjour Xmenpl

Merci pour ton aide !

Je me permets deux petits questions :

- Lorsque nous remplissions le fichier nous utilisons les flèches directionnelles pour se déplacer de gauche à droite une fois qu'une nouvelle ligne est créée (avec le bouton nouvelle fiche). Actuellement le nom du transporteur apparaît dans la colonne commentaire uniquement lorsque l'utilisateur fait "entrer" après avoir indiqué "406". Est-il possible de modifier la macro pour que cela fonctionne également avec les flèches directionnelles ?

Nota si un utilisateur clic sur une autre case avant de cliquer sur le nom du transporteur alors l'info n'ira pas dans ligne et colonne voulue.

Il y a pas un moyen d'avoir l'userform au premier plan sans possibilité de toucher aux autres cellules ?

Il me semble que c'est ainsi que se comporte les msgbox.

(J'ai réparé le bouton "nouvelle fiche" qui ne fonctionnait pas.)

Merci encore pour ton aide.

Baptiste

Rebonjour

Comme suite à ton message sur la réparation du bouton nouvelle fiche ; je vois deux solutions :

1ère solution si la personne utilise la flèche pour passer dans la colonne suivant alors il reste sur la même ligne donc

le -1 dans le code VBA ne sert plus.

Private Sub CommandButton1_Click()
X = ActiveCell.Row
Worksheets("Suivi commandes").Cells(X, 13).Value = "Transporteur D.H.L"
Unload Me
End Sub

Private Sub CommandButton2_Click()
X = ActiveCell.Row
Worksheets("Suivi commandes").Cells(X, 13).Value = "Transporteur U.P.S"
Unload Me
End Sub

2ème solution j'imagine que les cellules sont renseignées juste aprés avoir cliqué sur le bouton nouvelle ligne ?

dans ce cas ta macro insére une ligne donc la ligne de saisie en cours est toujours la ligne trois.

On peut alors remplacer le X par 3 dans le code ci-dessus.

La dernière solution tu crées un Userform indépendant de ta feuille avec la totalité des informations à saisir et un bouton

Valider pour alimenter ton tableau.

Re-bonjour

J'ai effectué les modifications que tu m'as indiqué et cela fonctionne parfaitement. Notamment car la plupart du temps nous faisons ainsi :

2ème solution j'imagine que les cellules sont renseignées juste aprés avoir cliqué sur le bouton nouvelle ligne ?

Je me suis dis que pour éviter tout problème, on pourrait délimiter à la ligne 3 uniquement l'exécution de l'userform lorsque la valeur entrée est 406 dans la colonne G. J''ai essayé de bidouiller de la façon suivante mon code mais j'ai toujours l'userform qui apparaît pour les autres lignes ...

Private Sub Worksheet_Change(ByVal Target As Range)

            If Range("E3") Then
                If Target.Value = 406 Then
                 UserFormBM.Show
             End If
           End If

    If Target.Column = 7 And Target.Count = 1 Then
            If Target.Value >= 404 And Target.Value <= 499 Then
40                Target.Offset(0, 1).Value = Feuil3.Range("A1:B78").Find(Target.Value).Offset(0, 1).Value
            End If
    End If

    If Target.Column = 9 And Target.Count = 1 Then
        If Target.Value = "24H" Then
            Target.Offset(0, 1).Value = Target.Offset(0, -8).Value + 1
        ElseIf Target.Value = "72H" Then
            Target.Offset(0, 1).Value = Target.Offset(0, -8).Value + 3
        ElseIf Target.Value = "96H" Then
            Target.Offset(0, 1).Value = Target.Offset(0, -8).Value + 4
        ElseIf Target.Value = "" Then
            Target.Offset(0, 1).Value = ""
        End If
    End If
    Application.ScreenUpdating = False
    Call MFC
    'Target.Activate 'ne pas activer / retour à la cellule précédente
End Sub

Encore merci pour ton aide

Baptiste.

Si tu limites à la ligne 3 cela revient à limiter à la valeur qui sera saisie en G3

Dans ce cas plus besoin d'un target

If Target.Value = 406 Then
                 UserFormBM.Show
             End If

Ce sera plutôt

If Range("G3").Value = 406 Then
                 UserFormBM.Show
             End If

Super ça fonctionne

Du coup j'imagine que peux aussi enlever la ligne suivante :

X = ActiveCell.Row

Au code de l'userform ?

Private Sub CommandButton1_Click()
X = ActiveCell.Row
Worksheets("Suivi commandes").Cells(3, 13).Value = "Transporteur D.H.L"
Unload Me
End Sub

Private Sub CommandButton2_Click()
X = ActiveCell.Row
Worksheets("Suivi commandes").Cells(3, 13).Value = "Transporteur U.P.S"
Unload Me
End Sub

EDIT: j'ai testé entre temps et ça fonctionne en retirant ce bout de code.

Un seul mot, MERCI pour ton aide !

Baptiste.

En effet mais tu pouvais aussi

écrire X=3 cela t'évitait de modifier toutes les lignes suivantes.

Rechercher des sujets similaires à "ajouter texte deux boutons userform"