XL 2016 RechercheV + macro

  • Initiateur de la discussion Initiateur de la discussion eXten
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eXten

XLDnaute Nouveau
Bonjour à tous,

Je sollicite votre aide concernant 2 erreurs avec ma formule Recherchev + Macro

1/Je vous explique:
- en G2: il devrait y avoir la formule suivante =SI(A2="11";RECHERCHEV(E2;PRI.NOMS!$F$22:$H$101;3;FAUX);SI(A2="21";RECHERCHEV(E2;PRI.NOMS!$M$22:$O$38;3;FAUX);SI(A2="22";RECHERCHEV(E2;PRI.NOMS!$S$22:$U$61;3;FAUX);RECHERCHEV(A2;PRI.NOMS!$B$2:$C$40;2;FAUX))))

Cependant, quand j'enregistre ma macro et l'exécute, je me retrouve avec la formule :
=SI(A3="11";RECHERCHEV(E3;PRI.NOMS!$F$22:$H$101;3;FAUX);SI(A3="21";RECHERCHEV(E3;PRI.NOMS!$M$22:$O$38;3;FAUX);SI(A3="22";RECHERCHEV(E3;PRI.NOMS!$S$22:$U$61;3;FAUX);RECHERCHEV(A3;PRI.NOMS!$B$2:$C$40;2;FAUX))))
Soit un décalage d'une ligne A3 au lieu de A2

1738677586042.png


2/ Ma formule colonne G ne fonctionne plus à partir de la A589, je me suis aperçu que la raison est le format "standard" de cette case car cela fonctionne format "nombre"...
Donc pourquoi la formule fonctionne avec la ligne A588 alors qu'elle est en "standard" et pas la A589 Etc... ? et auriez-vous une astuce?

Merci pour votre aide précieuse
1738678138129.png
 
Bonjour eXten, et bienvenu sur XLD,
Fournissez un petit fichier test (anonyme et sans données sensibles ) qui montrent le problème car avec des images .... 😉
A quoi vous sert l'enregistreur de macro si vous avez la formule déjà dans une cellule de TDS ?
 
Merci Sylvanu pour ton retour. Voici mon fichier, franchement je suis assez débutant sur excel, j'apprends par moi même mais là, je calle...
Est ce que tu peux aussi vérifier ma formule recherchev, car meme si je mets la cellule A589 en nombre, je ne trouve pas la bonne donnée...
Merci
 

Pièces jointes

Bonjour eXten, et bienvenu sur XLD,
Fournissez un petit fichier test (anonyme et sans données sensibles ) qui montrent le problème car avec des images .... 😉
A quoi vous sert l'enregistreur de macro si vous avez la formule déjà dans une cellule de TDS ?
En fait, le deuxième onglet, est un copie coller en valeur d'une extraction logiciel, et mes macros mettent en forme+ajout une colonne NOM avec la formule recherchev
 
Re,
Dans la dernière partie de votre formule vous avez :
VB:
RECHERCHEV(A586;PRI.NOMS!$B$2:$C$40;2;FAUX)))
Or, en colonne A ce sont des chaines et non des nombres. ( c'est pour ça qu'avant vous recherchez =SI(A576="11"; 11 étant une chaine.
Vous pouvez résoudre le problème avec :
Code:
=SI(A2="11";RECHERCHEV(E2;PRI.NOMS!$F$22:$H$101;3;FAUX);SI(A2="21";RECHERCHEV(E2;PRI.NOMS!$M$22:$O$38;3;FAUX);SI(A2="22";RECHERCHEV(E2;PRI.NOMS!$S$22:$U$61;3;FAUX);RECHERCHEV(CNUM(A2);PRI.NOMS!$B$2:$C$40;2;FAUX))))
Le CNUM va demander à XL d'essayez d'interpréter une chaine comme un nombre. Donc il traduira "12" en 12.

Au lieu de faire CNUM(A2) vous pouvez faire A2*1, car XL voyant que vous faire une opération cherchera à traduire A2 en nombre.

Au fait, pourquoi l'erreur apparait en ligne 588 ?
Parce que vous recherchez "11", "21", "22", et que la ligne 588 est la première ligne où il ne trouve pas, donc la première ligne où il exécute la dernière partie de votre formule.
 
Dernière édition:
super merci beaucoup c'était le coup de pouce qui me manquait, par conséquent ma Macro est bonne.

Dernière question pour ma curiosité personnelle, pourquoi dans VBA, lorsque j'enregistre la formule, elle apparait comme ci-dessous
"=IF(RC[-6]=""11"",VLOOKUP(RC[-2],PRI.NOMS!R22C6:R101C8,3,FALSE),IF(RC[-6]=""21"",VLOOKUP(RC[-2],PRI.NOMS!R22C13:R38C15,3,FALSE),IF(RC[-6]=""22"",VLOOKUP(RC[-2],PRI.NOMS!R22C19:R61C21,3,FALSE),VLOOKUP(VALUE(RC[-6]),PRI.NOMS!R2C2:R40C3,2,FALSE))))"

au lieu d'une formule simple (hors traduction si/if; recherchev/vlookup): =SI(A2="11";RECHERCHEV(E2;PRI.NOMS!$F$22:$H$101;3;FAUX);SI(A2="21";RECHERCHEV(E2;PRI.NOMS!$M$22:$O$38;3;FAUX);SI(A2="22";RECHERCHEV(E2;PRI.NOMS!$S$22:$U$61;3;FAUX);RECHERCHEV(CNUM(A2);PRI.NOMS!$B$2:$C$40;2;FAUX))))
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
79
Réponses
0
Affichages
281
Réponses
26
Affichages
1 K
Réponses
3
Affichages
455
Réponses
1
Affichages
466
Réponses
0
Affichages
378
Réponses
3
Affichages
284
Retour