Macro avec liste déroulante

bonjour à tous j'au un petit souci...je m'explique...

j'ai un fichier ou dans l'onglet "signalétique" en cellule O43 j'ai une liste déroulante...

j'aimerai quand la cellule D43 (a saisir) est vide entrer un commentaire qui appartient à ma liste déroulante qui se situe en O43....

cependant avant qu'il me sélectionne un item de la liste j'aimerai qu'il aille cherche dans l'onglet liste la cellule A1 (a corriger) puis quand je selectionne l'item dans ma liste il l'ajoute derrière.. après si je veux faire plusieurs corrections je veux qu'il retourne dans l'onglet liste et qu'il aille me chercher le signe "/" afin que je puisse concaténer une autre correction...

si cellule vide : A corriger (siret) par exemple.

si cellule non vide : A corriger (siret) / code NAF.

merci par avance je joins le fichier...

Bonjour,

ton fichier est joli ... mais j'avoue que je n'ai rien compris à la méthode que tu veux développer

peux-tu dire quel est l'objectif ?

car s'il manque des informations, on peut soit mettre la zone en couleur rouge, soit mettre un indicateur en marge, et faire une récap de ce qui manque ensuite

ok je m'explique...j'ai une liste déroulante en cellule 043 dans l'onglet signalétique...j'aimerais quand je clique sur la liste déroulante et que je fais un choix il s'incrémente directement dans la cellule A saisir (D43)...mais avant qu'il s'incrémente je veux récupérer dans mon onglet "liste" la cellule A1 (A corriger)..après se pose le problème si j'effectue plusieurs choix dans ma liste déroulante alors à la fin j'ai

A corriger siret / code Naf.....

Mets ceci dans la feuille signalétique

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("O43")) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    If Range("D43") = "" Then
        Range("D43") = Sheets("Liste").Range("A1") & " : "
    Else
        Range("D43") = Range("D43") & " / "
    End If
    Range("D43") = Range("D43") & Target.Value
End Sub

cela te convent-il ?

Bonjour,

je viens de tester et cela me convient parfaitement..

merci encore d'avoir pris du temps !

bonne journée

il existe juste un léger bug...car si je sélectionne dans ma liste un item et quand fait je me suis trompé et que j'appuie sur SUPPR alors ya un débogage...merci

et une autre question si je veux le faire pour 2 actions une en O43 et une en O45...

il suffit de changer If Intersect(Target, Range("O43")) Is Nothing Then Exit Sub par If Intersect(Target, Range("O43;045")) Is Nothing Then Exit Sub ou pas ...merci par avance

il existe juste un léger bug...car si je sélectionne dans ma liste un item et quand fait je me suis trompé et que j'appuie sur SUPPR alors ya un débogage...merci

j'ai fait un test et je n'ai pas d'erreur

peux-tu faire une copie d'écran du débogage ?

et une autre question si je veux le faire pour 2 actions une en O43 et une en O45...

il suffit de changer If Intersect(Target, Range("O43")) Is Nothing Then Exit Sub par If Intersect(Target, Range("O43;045")) Is Nothing Then Exit Sub ou pas ...merci par avance

plutôt

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("O43")) Is Nothing And Intersect(Target, Range("O45")) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    If Range("D43") = "" Then
        Range("D43") = Sheets("Liste").Range("A1") & " : "
    Else
        Range("D43") = Range("D43") & " / "
    End If
    Range("D43") = Range("D43") & Target.Value
End Sub

comme je suis en déplacement je vous envoie ceci demain dans la matinée...merci encore

je me suis mal exprimé...il y a la cellule O43 qui contient une liste pour l'incrémenter dans la cellule D43...mais j'ai une autre liste différente qui se trouveras en 045 qui viendra s'incrémenter dans la cellule D 45....merci par avance !

Dans ce cas

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("O43")) Is Nothing Then
    If Target.Value = "" Then Exit Sub
    If Range("D43") = "" Then
        Range("D43") = Sheets("Liste").Range("A1") & " : "
    Else
        Range("D43") = Range("D43") & " / "
    End If
    Range("D43") = Range("D43") & Target.Value
ElseIf Not Intersect(Target, Range("O45")) Is Nothing Then
    If Target.Value = "" Then Exit Sub
    If Range("D45") = "" Then
        Range("D45") = Sheets("Liste").Range("A1") & " : "
    Else
        Range("D45") = Range("D45") & " / "
    End If
    Range("D45") = Range("D45") & Target.Value
End If
End Sub

WAOUHHHH ça répond parfaitement à ma demande...merci beaucoup..la seule chose c'est quand je suis dans la cellule O43 et que je sélectionne un item puis que j'appuie sur la touche SUPPR dans la cellule O43 j'ai une erreur d'exécution 13...donc voilà merci pour tout !

la seule chose c'est quand je suis dans la cellule O43 et que je sélectionne un item puis que j'appuie sur la touche SUPPR dans la cellule O43 j'ai une erreur d'exécution 13...donc voilà merci pour tout !

Peux-tu faire une copie de l'écran de débogage ?

voilà

5copie-ecran.docx (98.92 Ko)

après il suffit de cliquer sur fin et ça marche....

Et quand tu cliques sur débogage ... ? peux-tu me montrer quelle ligne du ode VBA est en cause ?

If Target.Value = "" Then Exit Sub

OK

Essaie ceci alors :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo fin
If Not Intersect(Target, Range("O43")) Is Nothing Then
    If Target.Value = "" Then Exit Sub
    If Range("D43") = "" Then
        Range("D43") = Sheets("Liste").Range("A1") & " : "
    Else
        Range("D43") = Range("D43") & " / "
    End If
    Range("D43") = Range("D43") & Target.Value
ElseIf Not Intersect(Target, Range("O45")) Is Nothing Then
    If Target.Value = "" Then Exit Sub
    If Range("D45") = "" Then
        Range("D45") = Sheets("Liste").Range("A1") & " : "
    Else
        Range("D45") = Range("D45") & " / "
    End If
    Range("D45") = Range("D45") & Target.Value
End If
fin: Exit Sub
End Sub
Rechercher des sujets similaires à "macro liste deroulante"