XL 2021 VBA - créer une boucle de calcul pour remplir un tableau à partir de 2 autres sur une même feuille

clineM

XLDnaute Junior
Bonjour, sur ma feuille active j'ai 3 tableaux : Tableau3, Tableau4 et ManteauPrimitif.
je souhaite remplir le Tableau3 à en allant cherche dans le 4 la valeur qui correspond à la valeur Etiquette (ligne) et la valeur de l'entête divisé pour la même entête la valeur que j'ai dans le tableau ManteauPrimitif :
J'ai cette formule qui fonctionne par exemple pour l'élément Cs
=(INDEX(Tableau4;EQUIV([@Etiquette2];Tableau4[Etiquette2];0);EQUIV(Tableau3[[#En-têtes];[Cs]];Tableau4[#En-têtes];0)))/(INDEX(ManteauPrimitif[[Cs]:[Lu ]];;EQUIV(Tableau3[[#En-têtes];[Cs]];ManteauPrimitif[#En-têtes];0)))
je souhaite créer une macro qui me boucle ça sur l'ensemble du tableau3, je n'arrive même pas à automatiser à la main toutes les colonnes je suis obligée de changer le nom de l'élément (entête) à la mano ....
une âme charitable pour m'aider ?
Ensuite je souhaite créer sur une nouvelle feuille une figure des données du Tableau3 Etiquette/tous les éléments de l'entête (Cs à Lu) sous macro si possible !

MERCI MERCI !!!
 

Pièces jointes

  • test-normalisation.xlsm
    85.9 KB · Affichages: 7

youky(BJ)

XLDnaute Barbatruc
Bonjour clineM
Je mets la macro qui fonctionne
Si j'ai bien compris la demande
Bruno
VB:
Sub RemplirTableau3()
For k = 2 To [C65000].End(3).Row
lig = Application.Match(Cells(k, 7), [AP:Ap], 0)
For col = 10 To 33
Cells(k, col) = Cells(lig, col + 35) / Cells(2, col + 63)
Next
Next
End Sub
 

clineM

XLDnaute Junior
Bonjour, merci cela fonctionne, mais n'est valable que sur cette page, si jamais je veux l'utiliser quelque soit la configuration de la feuille, j'aurais préférer vérifier le nom de l'entête de chaque tableau. c'est une sécurité !
Peut-on lui dire que si résultat = 0 laisser la cellule vide ?
Merci
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
J'ai fait mais les entêtes ne doivent pas être mélangées par contre les Tableaux peuvent être déplacés.
Donc à tester et plus de zéro . . .
Je regarde encore si je trouve une solution pour tester ou est chaque enête
Bruno
 

Pièces jointes

  • test-normalisation.xlsm
    107.2 KB · Affichages: 4

youky(BJ)

XLDnaute Barbatruc
Bon je pense avoir trouvé la solution.
Je suis obligé de supprimer les espaces en "ManteauPrimitif" ceci en debut de macro car c'est du n'importe quoi, Il y a des espaces sur Ba et les autres qui bloquaient la macro
Je pense que tout fonctionne, je ne test pas le tableau4 et si une colonne n'est pas trouvée je vais en bug
J'ai pas fait la gestion d'error
Bruno et bonne suite
 

Pièces jointes

  • test-normalisation.xlsm
    108.3 KB · Affichages: 1
Dernière édition:

clineM

XLDnaute Junior
Bonjour Bruno, merci d'avoir pris le temps de chercher une solution à mon problème ! J'ai intégré ton code dans mon projet mais j'ai un message d'erreur. voici une copie de la feuille sur laquelle je travaille qui est peut différente de l'autre. Mais je viens de vérif, j'ai aussi un bug sur l'autre feuille au même endroit ! pourtant ça me fait le calcul nickel mais ça arrête ma série de macro du coup !
 

Pièces jointes

  • test-normalisationCh.xlsm
    84.7 KB · Affichages: 3

youky(BJ)

XLDnaute Barbatruc
Hello,
Va voir la cellule [AQ689]
il y a 1,55**17 c'est là le bug
Pour trouver j'ai lancé la macro copié une partie de la ligne du bug (en jaune) dans la fenetre execution
avec le ? en début
?Range("Tableau4Ch").ListObject.DataBodyRange(CLng(lig), col).value
je fais Enter
il m'a donné 1.55**17 et j'ai copié cette ligne pour voir la cellule
Range("Tableau4Ch").ListObject.DataBodyRange(CLng(lig), col).select
Bruno

Edit petite précision
Dim lig as long >>>si lig n'est pas trouvée lig ne pourra avoir qu'une valeur numéric et bug aussi
Il est préférable de mettre Dim lig seulement
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 283
Messages
2 096 810
Membres
106 751
dernier inscrit
Souleymani