Macro creation de liste de donnes qui viennent d une autre feuille

tomtom57280

XLDnaute Nouveau
Bonjour a tous

actuellement je travail sur un classeur dont je souhaite créer par macro des listes déroulante en "G4" sur la feuille "01 M" a partir de données en feuille "TYPES DEFAUT" des cellules de B1 a B22.
N`étant pas un grand expert je récupère toujours les macro sur internet et j’essaye de les adapter mais la je sèche.
voila ce que j ai fait actuellement:

Sheets("01 M")
ActiveSheet.Range("G4").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="TYPES DEFAUT"=$B$1:$B$22"

Malheureusement le mode débogage ne m aiguille pas du tout sur mes erreurs

Un super héro pourrez me dire ou j ai fait des fautes , je remercie d avance tous ceux qui me répondrons.

Cordialement Thomas
 

job75

XLDnaute Barbatruc
Bonjour tomtom57280, bienvenue su XLD,
VB:
With Sheets("01 M").Range("G4").Validation
    .Delete
    .Add xlValidateList, Formula1:="='TYPES DEFAUT'!$B$1:$B$22"
End With
ou encore :
VB:
Sheets("TYPES DEFAUT").Range("B1:B22").Name = "Liste" 'plage nommée
With Sheets("01 M").Range("G4").Validation
    .Delete
    .Add xlValidateList, Formula1:="=Liste"
End With
A+
 

tomtom57280

XLDnaute Nouveau
oh ben dis donc c’est rapide
ca m a lair pas mal ce que tu as ecris et t en remercie enormement je vais tester de ce pas :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Salut à @tomtom57280, @job75 ;)

Une autre écriture?:
Code:
With Sheets("01 M").Range("G4").Validation
  .Delete
  .Add xlValidateList, , , "=" & Sheets("TYPES DEFAUT").Range("$B$1:$B$22").Address(, , , True)
End With
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @tomtom57280,
pourquoi ces 3 virgule sans rien écrire dedans ?
Exemple pour Validation.add. Si on regarde l'aide Excel, on trouve:
Syntaxe


expression.Add(Type, AlertStyle, Operator, Formula1, Formula2)



expression Variable qui représente un objet Validation.


Paramètres


NomObligatoire/FacultatifType de donnéesDescription
TypeObligatoireXlDVTypeType de validation.
AlertStyleFacultatifVarianteStyle d'alerte de validation. Il peut s'agir de l'une des constantes XlDVAlertStyle suivantes : xlValidAlertInformation, xlValidAlertStop ou xlValidAlertWarning.
OperatorFacultatifVarianteOpérateur de validation des données. Il peut s'agir de l'une des constantes XlFormatConditionOperator suivantes : xlBetween, xlEqual, xlGreater, xlGreaterEqual, xlLess, xlLessEqual, xlNotBetween ou xlNotEqual.
Formula1FacultatifVarianteLa première partie de l'équation de validation des données.
Formula2FacultatifVarianteLa deuxième partie de la validation des données, lorsque Opérateur est xlBetweenxlBetween ou xlNotBetweenxlNotBetween (sinon, cet argument est ignoré).
On mentionne les arguments en respectant leur position dans la définition de la fonction:
Le paramètre 1 Type est obligatoire donc je le mentionne
Les paramètres 2 et 3 (AlertStyle et Operator) sont facultatifs et ne m'intéressent pas donc je n'indique rien à leurs positions
Le paramètre Formula1 est facultattif mais dans mon cas je dois le définir (c'est l'adresse de la liste)
Le paramètre Formula2 est facultatif et ne m’intéresse pas donc je ne le mentionne pas (on s'en dispense complètement car c'est le dernier)
On a donc la syntaxe:
.Add Type, AlertStyle, Operator,Formula1, Formula2

Avec ce que j'ai dit plus haut, on obtient :
.Add Type, , ,Formula1 => d’où mon code


On pouvait aussi utiliser les paramètres nommés. Dans ce cas, on ne mentionne que les paramètres qui nous sont utiles et l'ordre n'a pas d’importance.
.Add Type:=xlValidateList, Formula1:="=Liste"

Astuce: Comme Type est le premier paramètre dans la liste des paramètres, on peut omettre d'écrire Type:= et on aboutit à l'écriture de job75:
.Add xlValidateList, Formula1:="='TYPES DEFAUT'!$B$1:$B$22"
 

tomtom57280

XLDnaute Nouveau
Re @tomtom57280,


Exemple pour Validation.add. Si on regarde l'aide Excel, on trouve:


On mentionne les arguments en respectant leur position dans la définition de la fonction:
Le paramètre 1 Type est obligatoire donc je le mentionne
Les paramètres 2 et 3 (AlertStyle et Operator) sont facultatifs et ne m'intéressent pas donc je n'indique rien à leurs positions
Le paramètre Formula1 est facultattif mais dans mon cas je dois le définir (c'est l'adresse de la liste)
Le paramètre Formula2 est facultatif et ne m’intéresse pas donc je ne le mentionne pas (on s'en dispense complètement car c'est le dernier)
On a donc la syntaxe:
.Add Type, AlertStyle, Operator,Formula1, Formula2

Avec ce que j'ai dit plus haut, on obtient :
.Add Type, , ,Formula1 => d’où mon code


On pouvait aussi utiliser les paramètres nommés. Dans ce cas, on ne mentionne que les paramètres qui nous sont utiles et l'ordre n'a pas d’importance.
.Add Type:=xlValidateList, Formula1:="=Liste"

Astuce: Comme Type est le premier paramètre dans la liste des paramètres, on peut omettre d'écrire Type:= et on aboutit à l'écriture de job75:
.Add xlValidateList, Formula1:="='TYPES DEFAUT'!$B$1:$B$22"
je te remerci bcp pour ton explicqtion je viens dapprendre pas mal de chose grace a toi!!!!! :)
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas