Microsoft 365 Liste dérourante excel à recréer avec une valeur affectée par défaut

Sandlac

XLDnaute Nouveau
Bonjour à tous,

Et un grand merci de me lire. Je suis très loin d’être une experte VBA mais je sais que l'on peut se faciliter la "vie" du moins pro avec ^^

Je compile pour consolidation plusieurs fichiers excel qui contiennent chacun plusieurs listes déroulantes : en fait un fichier modèle envoyé à plusieurs personnes pour saisie afin de constituer un fichier national de base.
Plusieurs personnes ont supprimé ces listes déroulantes (sic) mais ont bien renseigné le choix. (les items sont "En cours", Perdu", "Gagné", "Abandonné")
Comment recréer ces listes dans ces fichiers en y affectant leur choix ceci afin d'avoir un fichier homogène. En effet, les fichier consolidés constituront un fichier national susceptible d'évoluer et les listes déroulantes doivent perdurer.

J'ai tenté d'utiliser pour exemple (en recréant en colonne B la liste déroulante | En y collant en colonne A la data choisie ) la syntaxe suivante :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
If Not Intersect(Range("A2:A800"), Target) Is Nothing Then
Set Rng = Range("B1:B800")
For Each c In Rng
Cells(Target.Row, 2).Value = Cells(Target.Row, 1).Value
Next c
End If
End Sub

Sans effet. Je suis obligée d'entrer dans chaque cellule pour déclencher le changement de value.
Un grand merci pour votre aide.
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Je ne comprends rien à ta demande.
D'une part tu parles de "liste déroulante" qui sont sans doute des listes de validation de données.
D'autre part tu fait un code qui n'a rien à voir avec des listes de validation, et qui est une boucle d'affectation sans utilité puisque bouclant sur 'c' qui n'est pas cité dans la boucle.

Plusieurs personnes ont supprimé ces listes déroulantes
Ça parait assez étrange que des utilisateurs aillent intentionnellement dans la validation des données pour en supprimer la liste.

Qu'est-ce que tu veux faire au juste ?
Si c'est recréer des listes de validation sur une colonne le code est le suivant.
Sinon, si c'est une modification du contenu, il faut expliquer ce que tu veux modifier.
Les listes de validation NE sont PAS du contenu.
VB:
Sub a()
    Dim Colonne As Range
 
    Set Colonne = ActiveSheet.Range("B:B")
 
    With Colonne.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="En cours,Perdu,Gagné,Abandonné"
        .IgnoreBlank = False
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502