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

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
744
Réponses
16
Affichages
2 K
Réponses
2
Affichages
1 K
Retour