Boucle avec écriture de formule

Repliquant96

XLDnaute Nouveau
Bonjour,

je ne suis absolument pas expérimenté sur VBA mais j'arrive quand même à faire deux ou trois trucs avec l'enregistreur de Macro. Cela ne permet toutefois pas de répondre à toutes les questions.

En gros j'ai réussi à importer deux fichiers sur deux onglets différents d'un workbook (et déjà ça m'a demandé... bref...).
Ce que je n'arrive pas à faire c'est à faire une boucle pour l'écriture d'une formule conditionnée dans un tableau par une autre cellule non vide.
Je suis conscient que je dois m'y prendre comme un manche donc si quelqu'un pouvait me filer un coup de main, ce serait vraiment le bienvenue.

si j'étais sous Excel, je ferais en cellule O2 un =si(estvide(A2);"";recherchev(G2;TableX;3;faux)
et j'étendrai ma formule sur le nombe de lignes de ma plage de données en colonne O.

Ici, j'ai créé un compteur pour savoir combien de lignes j'ai à traiter (puisque d'un import sur l'autre je ne vais pas avoir le même nombre de lignes) que j'ai placé en cellule XFD1.

Je parviens à écrire ma formule en faisant un
Range("O2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],Tableau_OICC,2,FALSE)"

Mais je ne comprends pas la logique pour faire la boucle de la ligne 2 à la ligne Range ("XFD1").Value

Merci de votre aide.
 

Modeste

XLDnaute Barbatruc
Re : Boucle avec écriture de formule

Bonjour Repliquant96 et bienvenue,

Un fichier aurait été le bienvenu, lui aussi (et le sera peut-être si ce qui suit ne fonctionne pas). Il aurait permis de vérifier qu'on comprend bien, de tester la solution et de vérifier les éventuelles particularités.

Bref, la boucle n'est peut-être pas nécessaire. Si j'ai bien compris, tu peux peut-être essayer:
Code:
Range("O2:O" & Range("XFD1").Value).FormulaR1C1 = "=VLOOKUP(RC[-10],Tableau_OICC,2,FALSE)"
... qui inscrira la formule en une fois dans toute la colonne
 

Repliquant96

XLDnaute Nouveau
Re : Boucle avec écriture de formule

Modeste,

ça ne fonctionne pas.
Mais de toutes façons, en regardant le code, je me dis que si cela fonctionnait cela écrirait effectivement la formule partout.
Or mon idée est plutôt de dire s'il y a une valeur en cellule G2, écrit la formule en O2, puis s'il y a une valeur en G3, écrit la formule en O3 ... jusqu'à la ligne correspondante à la valeur de ma cellule "XFD1".
Le but est d'éviter d'écrire la formule sur les lignes qui ne sont pas concernées de manière à éviter le N/A# qui va me pourrir mes tableaux dynamiques par la suite :)
 

Modeste

XLDnaute Barbatruc
Re : Boucle avec écriture de formule

Re,

Juste dire "ça ne fonctionne pas" ... n'aide guère à y voir clair :(

J'ai repris la partie de formule que tu avais indiquée dans ton bout de code. Elle n'est pas la même que ce que tu aurais écrit directement dans la feuille de calcul (si(estvide(A2);"";recherchev(G2;TableX;3;faux))

La question est: avec ma proposition, as-tu bien une formule dans la plage concernée? Obtiens-tu le même résultat que si tu avais inscrit la formule en O2 et recopié vers le bas?
Si non, dépose un bout de fichier exemple.
Si oui, qu'est-ce qui t'empêche d'adapter la formule en ajoutant un SI, comme tu le ferais en écrivant la formule dans la cellule:
Code:
IF(RC[-8]="";"";VLOOKUP(RC[-10],Tableau_OICC,2,FALSE))
 

Discussions similaires

Réponses
5
Affichages
353