Formule et boucle

Résolu
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011 - 11 avril 2008 à 10:33
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 11 avril 2008 à 12:21
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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 avril 2008 à 10:38
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 avril 2008 à 11:29
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 avril 2008 à 10:39
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
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
11 avril 2008 à 10:53
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)...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 avril 2008 à 10:59
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
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
11 avril 2008 à 11:24
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!!
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
11 avril 2008 à 11:42
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!!!!!!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 avril 2008 à 12:21
Re,
Y a pas de quoi , l'important c'est que tu aies compris.
Bonne Prog

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous