Formule et boucle [Résolu]

Signaler
Messages postés
42
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
24 février 2011
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour j'utilise la formule  suivante,

Sheets("feuill1").Select
Range("B42").Select
ActiveCell.FormulaR1C1 = "='Feuill2 '!R[-40]C[2]"
Range("B42").Select
Selection.AutoFill Destination:=Range("B42:B78"), Type:=xlFil

je met en place une formule qui copie la valeur de la cellule B2 de la feuil2 dans la cellule B42 de la feuil1 et puis effectue une recopie incrémentée dans les cellules de la plage spécifiée, ca marche nikel mais ce que je voudrais c'est utiliser mes variable d'une boucle for existante, cette boucle determine le numero de la ligne où on veux effectuer la copie sur la feuill2( ici c'est 42)
j'ai essaié ça mais j'ai quelques fautes de syntaxe:

Sheets("feuill1").Select
x=2-i
Cells(i, 2).Select      'i et j sont mes variables issues de ma boucle for (ici i=42, j=78)
ActiveCell.FormulaR1C1 = "='Feuill2 '!R[x]C[2]"   'j'ai mis x a la place de -40 mais pas de bol ca marche pas j'ai pensé a mettre offset(x, 2) a la place de R[-40]C[2] mais ca marche tjrs pas
Cells(i, 2).Select
Selection.AutoFill Destination:=Range("B42:B78"), Type:=xlFil ' pareil pour Range vu que je peux pas faire B(i) j'ai essaié de faire :  Selection.AutoFill Destination:=Cells(i, 2) to Cells(j, 2)., Type:=xlFil

ça serais cool si quelqu'un peut m'aider je suis encore debutant en VBA et j'y ai passé bcp de temps, Merci d'avance.

8 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,

IL faut savoir que ActiveCell.FormulaR1C1 = "='Feuill2 '!R[ x ]C[2]"  ce X ne represente pas ta variable cela représente simplement un caractere de ta chaine

Il faut faire comme suit:
ActiveCell.FormulaR1C1 = "='Feuill2 '!R[" & x & "]C   "

je ne sais pas is cela règlera ton problème mais en toutcas sans cela ca ne marchera pas

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Re,
Ou la je ne comprends plus trop... ceci ne réponds pas à ta question?Selection.AutoFill Destination:Range( "B" & i & <gras>":B" & j), Type: </gras>xlFil
Tu mets ce que bon de semble dans i et j.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Oups il y a un peu de code qui est parti lors du Copier coller
ActiveCell.FormulaR1C1 = "='Feuill2 '!R[" & x & "]C[2]"
@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
42
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
24 février 2011

super cette partie marche nikel Merci jrivet

mais maintenant comment je pourait faire pour effectuer la recopie incrémentée dans les cellules de la plage Range("B42:B78") en utilisant mes variables i et j?
je peux pas faire aussi Range(" B & i & : B & j &") !! je c'est ca marchera pas...
mais y a t il une foction qui peut faire ca
 peut etre avec des Cells(i, 2) to Cells(j, 2)...
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
ce que tu cherches à faire est tout à fait faisable de la même maniere
Regarde bien comment je faisait et tu pourras le reproduire.
Je fais ActiveCell.FormulaR1C1 = "='Feuill2 '!R[" & x & "]C[2]"
et toi Range(" B & i & : B & j &")
regarde bien il y a des différences.
@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
42
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
24 février 2011

Je vois pas ce que tu veux dire jrivet , le Range(" B & i & : B & j &") etait juste une eventualité de ce que je voulais faire je c'est que ca marchera pas.
 mais ce que je demande c'est: est ce qu'il y a une fonction qui me permetra de faire une recopie incrémentée dans une plage que ma boucle for determine avec mes variables i et j sans utiliser cette fonction

Selection.AutoFill Destination:=Range("B42:B78"), Type:=xlFil

le i correspond à 42 et le j correspond à 78

Merci beaucoup!!
Messages postés
42
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
24 février 2011

d'accord maintenant j'ai compris comment ca marche la prochaine fois je me ferai pas avoir, c'est vrai en y pensant c'etait bete comme question, mais j'y est passé toute la matinée.

Merci jrivet sans toi j'aurais perdu toute une journée. super ce forum Merci bcp encore une fois!!!!!!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Re,
Y a pas de quoi , l'important c'est que tu aies compris.
Bonne Prog

@+: Ju£i?n
Pensez: Réponse acceptée