Microsoft 365 Formule Indirect à intégrer dans VBA

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

AD95

XLDnaute Junior
Bonjour à tous,

J'ai besoin d'une formule que je peux intégrer dans VBA.
Le besoin est le suivant :

si colonne A est identique que la colonne F de la feuille Extraction alors la colonne D est = à la colonne B de la feuille Extraction
si colonne A est identique que la colonne F de la feuille Extraction alors la colonne F est = à la colonne C de la feuille Extraction

Exemple :
1709223332953.png


si colonne A est identique que la colonne F de la feuille Extraction alors la colonne L est = à la colonne L de la feuille Extraction
Exemple :
1709223308607.png




Dans le code VBA lui dire d'étendre la formule jusqu'à la dernière ligne de la colonne A


Merci d'avance de votre expertise !!!!!!!!
 

Pièces jointes

Dernière édition:
Solution
Re,
En PJ un essai. La réactualisation se fait lors de la sélection des feuilles CCA et ATB.
Avec beaucoup de lignes, j'ai préféré mettre les formules puis ensuite faire un coller valeurs, ce qui sera moins lourd et plus rapide. Avec :
VB:
Feuille CCA :
Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    DL = [A10000].End(xlUp).Row
    Range("D9:D" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$D$1:$D$10000;EQUIV(A9;Extraction!$F$1:$F$10000;0));"""")"
    Range("D9:D" & DL) = Range("D9:D" & DL).Value
    Range("F9:F" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$C$1:$C$10000;EQUIV(A9;Extraction!$F$1:$F$10000;0));"""")"
    Range("F9:F" & DL) = Range("F9:F" & DL).Value
    Range("L9:L" & DL).FormulaLocal =...
Bonjour AD, sousou,
Si vous mettez vos tableaux en ATB et CCA sous forme de tableaux structurés, alors le VBA est inutile, et vous pouvez utiliser des formules du genre :
VB:
=SIERREUR(INDEX(Extraction!$B$1:$B$10000;EQUIV(Tableau1[[#Cette ligne];[TEX1]];Extraction!$F$1:$F$10000;0));"")
L'avantage d'un TDS sont :
1- Les formules se dupliqueront automatiquement lorsqu'on ajoute des lignes.
2- Si on efface de tableau, les formules restent en place.
 

Pièces jointes

Bonjour AD, sousou,
Si vous mettez vos tableaux en ATB et CCA sous forme de tableaux structurés, alors le VBA est inutile, et vous pouvez utiliser des formules du genre :
VB:
=SIERREUR(INDEX(Extraction!$B$1:$B$10000;EQUIV(Tableau1[[#Cette ligne];[TEX1]];Extraction!$F$1:$F$10000;0));"")
L'avantage d'un TDS sont :
1- Les formules se dupliqueront automatiquement lorsqu'on ajoute des lignes.
2- Si on efface de tableau, les formules restent en place.
Bonjour Sylvanu,

Merci pour ton retour. -
Peux-tu stp m'envoyer le code ici eb format texte je ne peux pas ouvrir les PJ extérieur (le boulot à tout bridé 😶‍🌫️ )

Les tableaux ne sont pas structurés.
Il peut y avoir 2 lignes comme 600 000 lignes et les données textes ne sont jamais les mêmes.

Je suis encore novice mais tu peux dire c'est quoi un TDS ?

Merci d'avance de ton aide
 
Bonjour,
La formule est déjà en format texte dans le post #4.
Un tableau structuré (TDS) est simple à construire.
Vous sélectionnez votre tableau et faites Insertion/Tableau croisé dynamique.
Bonjour Sylvanu,

Merci pour ton retour, le problème c'est que je peux pas faire de tableau croisé dynamique.
Le tableau dépend d'autres formules et code VBA qui créer le tableau qui fait des calcul etc.... je peux pas trop toucher au tableau.
 
Re,
En PJ un essai. La réactualisation se fait lors de la sélection des feuilles CCA et ATB.
Avec beaucoup de lignes, j'ai préféré mettre les formules puis ensuite faire un coller valeurs, ce qui sera moins lourd et plus rapide. Avec :
VB:
Feuille CCA :
Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    DL = [A10000].End(xlUp).Row
    Range("D9:D" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$D$1:$D$10000;EQUIV(A9;Extraction!$F$1:$F$10000;0));"""")"
    Range("D9:D" & DL) = Range("D9:D" & DL).Value
    Range("F9:F" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$C$1:$C$10000;EQUIV(A9;Extraction!$F$1:$F$10000;0));"""")"
    Range("F9:F" & DL) = Range("F9:F" & DL).Value
    Range("L9:L" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$L$1:$L$10000;EQUIV(A9;Extraction!$F$1:$F$10000;0));"""")"
    Range("L9:L" & DL) = Range("L9:L" & DL).Value
End Sub
Feuille ATB :
Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    DL = [A10000].End(xlUp).Row
    Range("D2:D" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$B$1:$B$10000;EQUIV(A2;Extraction!$F$1:$F$10000;0));"""")"
    Range("D2:D" & DL) = Range("D2:D" & DL).Value
    Range("F2:F" & DL).FormulaLocal = "=SIERREUR(INDEX(Extraction!$C$1:$C$10000;EQUIV(A2;Extraction!$F$1:$F$10000;0));"""")"
    Range("F2:F" & DL) = Range("F2:F" & DL).Value
End Sub
J'ai supposé votre XL en français.
 

Pièces jointes

- 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
6
Affichages
319
Retour