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

pb formule VBA avec index et deux équiv

  • Initiateur de la discussion Initiateur de la discussion FloH
  • 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 !

FloH

XLDnaute Nouveau
Bonjour à toutes et à tous,


J'ai une erreur qui est générée avec cette macro il ne reconnait pas mes deux variables crit et usn.
Cette macro permet de sélectionner dans le tableau de l'onglet Global certaines données pour les copier en fonction dans l'onglet critère du pareto.

Je ne comprends pas pourquoi, pourtant elles sont bien déclarées.

Code:
Sub Critère_du_pareto()

Dim crit As String
Dim usn As String

Sheets("Pareto des critères").Select

For I = 2 To 13

    For J = 2 To 44
    
    crit = Cells(1, I)
    usn = Cells(J, 1)
    
    Cells(J, I).Select
    
    'données, critères et usines sont des plages de données d'un autre onglet "Global"
        
    ActiveCell.FormulaR1C1 = "=index(données,match(" & crit & ",critères,0),match(" & usn & ",usines,0))"

    Next J
    
Next I

End Sub



Je vous remercie d'avance pour votre aide car je suis dans une impasse.
 
Dernière édition:
Re : pb formule VBA avec index et deux équiv

Bonjour FloH et bienvenue à toi,


C'est toujours nettement plus compliqué sans fichier!

Sans certitude donc, essaye toujours
Code:
ActiveCell.FormulaR1C1 = "=index(données,match(""" & crit & """,critères,0),match(""" & usn & """,usines,0))"

Petite mise en garde, au passage: puisque tu es une "adepte de vba depuis peu" 🙂 en fréquentant ce forum (mais les autres sources sont concordantes! 😀) tu liras qu'il vaut mieux éviter les .Select, qui ralentissent inutilement l'exécution du code
 
Re : pb formule VBA avec index et deux équiv

Bonsour®

Heu ...😕

pourquoi une macro ???
la plage concernée est toujours $B$2:$M$44

en B2:
=INDEX(DONNées;EQUIV(B$1;CRITERES;0);EQUIV($A2;USINES;0))
puis étirer la formule à toute la plage B2:M44

ou bien simplement sans boucle par macro :
VB:
Sub Critère_du_pareto()
 Sheets("Pareto des critères").Select
 Range("B2:M44").FormulaLocal="=INDEX(Données;EQUIV(B$1;Critères;0);EQUIV($A2;Usines;0))" 
'ou bien :   
'Range("B2:M44").Formula="=INDEX(Données, MATCH(B$1,Critères,0),MATCH($A2,Usines,0))" 
 'données, critères et usines sont des plages de données d'un autre onglet "Global"
 End Sub
 
Re : pb formule VBA avec index et deux équiv

Bonjour,

Non ne pense pas que cela soit possible car le nombre de ligne et de colonne peut varier. Par contre il me met la formule dans la cellule. Comment faire si je ne veux que le résultat?
 
Re : pb formule VBA avec index et deux équiv

Bonsour®
🙄
il suffit de nommer dynamiquement la plage destination...

VB:
Sub Critère_du_pareto()
  Sheets("Pareto des critères").Select
  [PlageDestination].FormulaLocal="=INDEX(Données;EQUIV(B$1;Critères;0);EQUIV($A2;Usines;0))" 
'ou bien :   
'[PlageDestination].Formula="=INDEX(Données, MATCH(B$1,Critères,0),MATCH($A2,Usines,0))" 
 'PlageDestination, données, critères et usines sont des plages de données d'un autre onglet "Global"
[PlageDestination].Value=[PlageDestination].Value
 End Sub
 
- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
372
Réponses
3
Affichages
801
Réponses
6
Affichages
643
Réponses
2
Affichages
745
Réponses
16
Affichages
2 K
Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…