XL 2016 Erreur lorsque j'exécute ma macro enregistré

ZAKAO

XLDnaute Junior
Bonjour tout le monde, vous allez pas en revenir mais si je suis là c'est que j'ai un soucis. Dans une de mes macros j'ai une erreur qui intervient lorsque je veux créer une liste déroulante semi automatique. Lorsque je le fais manuellement je n'ai pas de soucis, alors j'ai enregistré mes actions pour voir d'où vient le problème mais lorsque j'exécute la macro enregistré telle qu'elle, j'ai encore une erreur. Ci-joint un fichier test :
1639058008627.png


F_Name = DECALER(First_Name;0;0;NB.VAL(L_Name);1)
L_Name = première colonne de la première feuille
First_Name = première valeur de L_Name

Merci d'avance :)
 

Pièces jointes

  • Test.xlsm
    23.2 KB · Affichages: 9

ZAKAO

XLDnaute Junior
Bonjour Zakao,
Toujours vos problèmes de langues ? 😂
Peut être une piste :
Avec Formula, de mémoire, la formule doit être en anglais, sinon utiliser FormulaLocal. Lien
Je n'ai pas pu tester car je ne connais pas DESREF,COINCIDIR et CONTAR.SI.
Oui ahaha, je n'en peux plus de la paella mdr. J'ai essayé votre solution mais cela ne fonctionne pas. Pour que vous testiez j'ai mis la ligne de code en Français juste en dessous :)
"=SI(B3<>"""";DECALER(F_Name;EQUIV(B3&""*"";F_Name;0)-1;;NB.SI(F_Name;B3&""*"");1);F_Name)"
Je ne pense pas que ce soit un problème de langue c'est Excel lui-même qui a remonté cette formule.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Echec complet.
Même avec l'enregistreur de macro, si on rejoue la macro il est en erreur.
Le seul truc que j'ai trouvé, c'est d'avoir une liste dans une feuille et d'y faire référence :
VB:
Sub Macro99()
    Range("G18").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=Liste"
    End With
End Sub
Désolé.
 

ZAKAO

XLDnaute Junior
Echec complet.
Même avec l'enregistreur de macro, si on rejoue la macro il est en erreur.
Le seul truc que j'ai trouvé, c'est d'avoir une liste dans une feuille et d'y faire référence :
VB:
Sub Macro99()
    Range("G18").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=Liste"
    End With
End Sub
Désolé.
Il n'y a pas besoin d'être désolé, ce problème est trop bizarre. A la main tout fonctionne, en macro tout s'écroule :´(
 

cp4

XLDnaute Barbatruc
Il n'y a pas besoin d'être désolé, ce problème est trop bizarre. A la main tout fonctionne, en macro tout s'écroule :´(
Bonsoir Zakao, Sylvanu, le forum,

Si ça peut aider ta formule
"=SI(B3<>"""";DECALER(F_Name;EQUIV(B3&""*"";F_Name;0)-1;;NB.SI(F_Name;B3&""*"");1);F_Name)"

Sous VBA pourrait s'écrire:
"=If([B3]<>"""";Offset(F_Name;Match([B3]&""*"";F_Name;0)-1;;CountIf(F_Name;[B3]&""*"");1);F_Name)"

à tester. Si ça ne fonctionne pas remplacer [B3] par Range("B3")

Bonne soirée.
 

ZAKAO

XLDnaute Junior
Bonsoir Zakao, Sylvanu, le forum,

Si ça peut aider ta formule
"=SI(B3<>"""";DECALER(F_Name;EQUIV(B3&""*"";F_Name;0)-1;;NB.SI(F_Name;B3&""*"");1);F_Name)"

Sous VBA pourrait s'écrire:
"=If([B3]<>"""";Offset(F_Name;Match([B3]&""*"";F_Name;0)-1;;CountIf(F_Name;[B3]&""*"");1);F_Name)"

à tester. Si ça ne fonctionne pas remplacer [B3] par Range("B3")

Bonne soirée.
J'ai essayé toutes tes suggestions sans succès :( Je ne pense pas que je m'y prenne forcément mal pourtant... Je vais réfléchir à une autre manière d'aborder le problème. Merci quand même :)

Si quelqu'un d'autre a une idée n'hésitez pas
 

cp4

XLDnaute Barbatruc
J'ai essayé toutes tes suggestions sans succès :( Je ne pense pas que je m'y prenne forcément mal pourtant... Je vais réfléchir à une autre manière d'aborder le problème. Merci quand même :)

Si quelqu'un d'autre a une idée n'hésitez pas
Bonjour,

J'ai ouvert ton fichier, il n'y a aucune trace de ta manipulation.
Tu nous dis que lorsque tu le fais manuellement ça fonctionne dans ton 1er message.
Le code enregistré avec l'enregistreur de ma macro est un peu bizarre. Car normalement, sous VBA tout est en anglais Or, je constate comme Sylvanu les fonctions DESREF,COINCIDIR et CONTAR.SI. Je pense que ces dernières sont des fonctions Excel dans la langue régionale du système.

Pourrais-tu joindre ton fichier avec la fonction qui fonctionne.

A+
 

ZAKAO

XLDnaute Junior
Bonjour,

J'ai ouvert ton fichier, il n'y a aucune trace de ta manipulation.
Tu nous dis que lorsque tu le fais manuellement ça fonctionne dans ton 1er message.
Le code enregistré avec l'enregistreur de ma macro est un peu bizarre. Car normalement, sous VBA tout est en anglais Or, je constate comme Sylvanu les fonctions DESREF,COINCIDIR et CONTAR.SI. Je pense que ces dernières sont des fonctions Excel dans la langue régionale du système.

Pourrais-tu joindre ton fichier avec la fonction qui fonctionne.

A+
Par VBA cela ne fonctionne pas c'est bien là le problème.

Comment faire pour que cela fonctionne ?

Eh bien manuellement il faut saisir le case jaune, aller dans l'onglet "Validation des données "en français je crois. Puis il faut sélectionner liste, rentrer la formule suivante :

"=SI(B3<>"""";DECALER(F_Name;EQUIV(B3&""*"";F_Name;0)-1;;NB.SI(F_Name;B3&""*"");1);F_Name)"

Et enfin désactiver le message d'erreur.

La macro que tu vois sont ces actions enregistrées par Excel :)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
À mon avis c'est l'enregistreur qui n'est pas bien finalisé pour ça : chez moi il m'a remplacé les ';' par des ',' mais il a quand même laissé les noms de fonction français au lieu des natifs US qui seul fonctionnent. Il faut donc corriger dans la macro
VB:
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
        Formula1:="=IF(B3<>"""",OFFSET(F_Name,MATCH(B3&""*"",F_Name,0)-1,,COUNTIF(F_Name,B3&""*""),1),F_Name)"
Mais de toute façon ça ne donne pas une liste correcte si le tableau en feuille "Hoja1" n'est pas classée sur la 1ère colonne.
 

ZAKAO

XLDnaute Junior
Un peu d'effort, si je t'ai demandé de joindre un fichier qui fonctionne ce n'est pas pour rien.
Chez-moi, ta formule ne passe pas.
Regarde la pièce jointe 1124294
Comme tu peux le constater sur la démo ci-dessus.

A+
J'ai peut-être mal traduit la formule, je vous avoue je ne sais pas pourquoi cela ne fonctionne pas.

Depuis la veille, j'ai complètement repris la chose, donc je n'ai plus ce fichier d'origine. Je vous joint ma solution, je suis passé par un Userform qui me permît d'avoir une liste déroulante parfaitement dynamique et semi-automatique.

Hier, je ne savais pas pourquoi mes formules fonctionnaient mais dans l'enregistreur cela ne fonctionnait pas. Si la réponse est bien que l'enregistreur de macro fait un peu n'importe quoi avec les langues des formules alors c'est bon à savoir pour tout le monde. :)

Merci tout le monde :)
 

Pièces jointes

  • Test.xlsm
    40.7 KB · Affichages: 4

cp4

XLDnaute Barbatruc
J'ai peut-être mal traduit la formule, je vous avoue je ne sais pas pourquoi cela ne fonctionne pas.

Depuis la veille, j'ai complètement repris la chose, donc je n'ai plus ce fichier d'origine. Je vous joint ma solution, je suis passé par un Userform qui me permît d'avoir une liste déroulante parfaitement dynamique et semi-automatique.

Hier, je ne savais pas pourquoi mes formules fonctionnaient mais dans l'enregistreur cela ne fonctionnait pas. Si la réponse est bien que l'enregistreur de macro fait un peu n'importe quoi avec les langues des formules alors c'est bon à savoir pour tout le monde. :)

Merci tout le monde :)
Dans la cellule de validation essaie cette formule: =INDIRECT("tabla1[Name]")
 

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
Pourquoi un userform?
perso j'ajoute un simple combobox
invisible qui s'affiche quand sélection de la cellule B3

dans le module de hoja3
choix1=tabla ok
mais on la trie dans l'ordre fonction quicksort
on bénéficie de l'intuitivité native
donc dans l'event change on dropdown simplement
et au click on envoie la ligne entière de la combo
et c'est tout

en gros même effet qu'avec une LDV + l'intuitivité native
quand on sélectionne ailleurs la combo disparaît de la même façon qu'une LDV

voilà ma vision de la chose a moindre coup
on pourrait ajouter le tri reducteur si tu veux aussi
demo.gif
 

Pièces jointes

  • Test V patricktoulon simply combobox .xlsm
    47 KB · Affichages: 9

ZAKAO

XLDnaute Junior
Bonjour a tous
Pourquoi un userform?
perso j'ajoute un simple combobox
invisible qui s'affiche quand sélection de la cellule B3

dans le module de hoja3
choix1=tabla ok
mais on la trie dans l'ordre fonction quicksort
on bénéficie de l'intuitivité native
donc dans l'event change on dropdown simplement
et au click on envoie la ligne entière de la combo
et c'est tout

en gros même effet qu'avec une LDV + l'intuitivité native
quand on sélectionne ailleurs la combo disparaît de la même façon qu'une LDV

voilà ma vision de la chose a moindre coup
on pourrait ajouter le tri reducteur si tu veux aussi
Regarde la pièce jointe 1124312
Extrêmement intéressant et flexible comme programme, en effet, j'aimerai tout de même intégrer un tri réducteur. Je vais essayer de faire cela de mon côté mais si tu peux le servir directement sur un plateau d'argent, je me servirai directement avec grand plaisir ahah.

Un grand merci car cela pourrai être encore plus intuitif et rapide que l'UserForm :)
 

Discussions similaires

Réponses
1
Affichages
173
Réponses
9
Affichages
588
Réponses
11
Affichages
460