Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule de validation de données par macro

Youri

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Est-il possible d'insérer une formule dans une validation de données par macro ?

En fait, pendant que j'enregistrais une macro, j'ai inséré une formule dans une validation de données d'une cellule mais lorsque j'ai relancé la macro : elle ne fonctionnait plus (c'est quand même très étrange car il s'agit d'une macro enregistrée).

Je vous remercie à l'avance pour votre aide,
Youri
 

Pierrot93

XLDnaute Barbatruc
Re : Formule de validation de données par macro

Bonsoir Youri

peut être qu'un fichier joint nous aiderait à t'aider. Je pense qu'avant de rajouté un objet "validation" il faut deleter celui déjà existant....

bonne soirée
@+
 

Youri

XLDnaute Occasionnel
Re : Formule de validation de données par macro

Bonjour Pierrot,

Voici un fichier qui illustre mon problème.
J'ai ouvert un classeur, lancé tout de suite l'enregistrement d'une macro et sauvegardé le fichier juste après avoir cliqué sur le bouton d'arrêt de l'enregistrement.
La macro est donc sensée reproduire tout ce que j'ai fait après avoir ouvert le fichier. Seulement voilà, si on efface toutes les données et qu'on relance la macro, on obtient l'erreur 1004 ...
La validation est contenue dans la cellule verte et la macro plante quand elle veut à nouveau y entrer les formules de validation.

Merci à l'avance,
Youri
 

Pièces jointes

  • classeurtest.xls
    22.5 KB · Affichages: 190
  • classeurtest.xls
    22.5 KB · Affichages: 184
  • classeurtest.xls
    22.5 KB · Affichages: 198
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Formule de validation de données par macro

Re

rien de mieux à te proposer que de passer par une plage nommée, regarde le code ci dessous :

Code:
ActiveWorkbook.Names.Add Name:="maliste", RefersToR1C1:= _
        "=IF(COUNTA(Feuil1!R4C2:R10C2)=0,"""",Feuil1!R4C2:R10C2)"
With Range("D4").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=maliste"
End With

bonne soirée
@+
 

Youri

XLDnaute Occasionnel
Re : Formule de validation de données par macro

Bonjour Pierrot, Bonjour le forum,

Merci beaucoup pour cette solution qui m'a fait apprendre une nouvelle méthode. Mais bon, ça ne résout pas mon problème car si la plage d'origine est reconnue comme erronée, même cette méthode ne fonctionne pas.
Donc je crois que je vais procéder de la manière suivante :
1. Je vais externaliser au maximum mes formules de validation vers des cellules temporaires.
2. Je vais m'assurer que les cellules sources de la validation contiennent des données valides.
3. Je vais créer les règles de validation.
4. Je vais insérer les formules externalisées précédemment dans les cellules sources des règles de validation.
De cette manière, je contourne le problème, mais c'est quand même moche ...

Bonne journée,
Youri
 

Excel_lent

XLDnaute Impliqué
Re : Formule de validation de données par macro

Bonsoir à tous,

C'est ta formule SI(NBVAL($B$4:$B$10)=0;"""";$B$4:$B$10) qui est en cause.

Voir fichier joint,

@+
 

Pièces jointes

  • Comparetest.xls
    36.5 KB · Affichages: 187

Pierrot93

XLDnaute Barbatruc
Re : Formule de validation de données par macro

Bonjour Youri, Excel Lent

@Excel Lent
je pense que la problématique est de mettre par vba une formule dans une liste de validation et non une plage de cellules. Car là, ta plage est fixe et ne tiendra donc pas compte du conditionnement.

Personnellement je n'y suis pas arrivé directement, "l'astuce" consistant à passer par une plage nommée dans laquelle tu mets la formule...

bonne journée
@+
 

Discussions similaires

Réponses
8
Affichages
472
Réponses
12
Affichages
284
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…