VBA Range avec variables

hypo78

XLDnaute Impliqué
Bonjour,
je rencontre un petit problème avec ce code :

Code:
 Sub synthese()
Dim i As Long

For i = 3 To 12

Sheets("Synthese_Stagiaires").Range(Cells(i, 2), Cells(i, 39)) = Sheets("1").Range("B56:AN56").Value

Next i

End Sub

Ce code fonctionne mais bien évidemment me copie 10 fois la même ligne.
Lorsque je veux faire intervenir la variable comme çà :

Code:
Sheets("Synthese_Stagiaires").Range(Cells(i, 2), Cells(i, 39)) = Sheets("1").Range(Cells((51 + i), 2), Cells((51 + i), 39)).Value

J'ai le message :erreur d'éxecution 1004, erreur définie par l'application ou par l'objet.

Merci d'avance pour votre aide
 

Dranreb

XLDnaute Barbatruc
Re : VBA Range avec variables

Bonjour.

Pourquoi ne faites vous pas simplement
VB:
FDest.[B3:AN12].Value = FSrc.[B52:AN61].Value
Avec FSrc le CodeName de la feuille "1" et FCbl le CodeName de la feuille "Synthèse Stagiaires" ?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA Range avec variables

Bonjour le fil, bonjour le forum,

Essaie comme ça :

Code:
Sub synthese()
Dim i As Byte

For i = 3 To 12
    Sheets("Synthese_Stagiaires").Range(Sheets("Synthese_Stagiaires").Cells(i, 2), Sheets("Synthese_Stagiaires").Cells(i, 39)) = Sheets("1").Range(Sheets("1").Cells((51 + i), 2), Sheets("1").Cells((51 + i), 39)).Value
Next i
End Sub
 
Dernière édition:

hypo78

XLDnaute Impliqué
Re : VBA Range avec variables

Re,


@Dranreb j'ai essayé çà mais çà ne fonctionne pas
Code:
Sub synthese()

Dim Fdest As Worksheet
Dim FSrc As Worksheet

Fdest = Sheets("Synthese_Stagiaires")
FSrc = Sheets("1")

Fdest.[B3:AN12].Value = FSrc.[B52:AN61].Value

End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA Range avec variables

Bonjour le fil, bonjour le forum,

En reprenant le code de Bernard ça donnerait :

Code:
Sub synthese()
Dim DEST As Object
Dim Src As Object

Set DEST = Sheets("Synthese_Stagiaires")
Set Src = Sheets("1")
DEST.[B3:AN12].Value = Src.[B52:AN61].Value
End Sub

Perso, j'aurais écris le code comme ça :
Code:
Sub synthese()
Dim D As Object
Dim S As Object
Dim I As Byte

Set D = Sheets("Synthese_Stagiaires")
Set S = Sheets("1")
For I = 3 To 12
    D.Cells(I, 2).Value = S.Range(S.Cells(I + 51, 2), S.Cells(I + 51, 39))
Next I
End Sub
 
Dernière édition:

hypo78

XLDnaute Impliqué
Re : VBA Range avec variables

@ robert,

ton premier code sur la base de Bernard fonctionne, mais pas le second.
je n'arrive pas à boucler sur l'ensemble de mes feuilles. Comment peut-on faire varier

Code:
Set Src = Sheets("1")
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA Range avec variables

Bonjour le fil, bonjour le forum,

Essaie comme ça :

Code:
Sub synthese()
Dim DEST As Object
Dim I As Byte
Dim Src As Object

Set DEST = Sheets("Synthese_Stagiaires")
For I = 1 To 60
    Set Src = Sheets(CStr(I))
    DEST.[B3:AN12].Value = Src.[B52:AN61].Value
Next I
End Sub

Si ça ne marche pas, envoie un fichier exemple...
 

hypo78

XLDnaute Impliqué
Re : VBA Range avec variables

Bon ben je reviens....

le code actuel

Code:
Sub synthese()
Dim DEST As Object
Dim I As Byte
Dim J As Byte
Dim Src As Object

Set DEST = Sheets("Synthese_Stagiaires")
For I = 1 To 60
J = 3


Set Src = Sheets(CStr(I))
    DEST.Range(Cells(J, 2), Cells(J + 9, 39)).Value = Src.[B54:AN63].Value
Next I


End Sub

mais comment faire varier J pour avoir 3, puis 13 puis 23 ......
 

hypo78

XLDnaute Impliqué
Re : VBA Range avec variables

C'est bon j'ai trouvé une solution

Code:
 Sub synthese()
Dim DEST As Object
Dim I As Byte

Dim Src As Object

Set DEST = Sheets("Synthese_Stagiaires")
For I = 1 To 5
J = [D65536].End(xlUp)(2).Row


Set Src = Sheets(CStr(I))
    DEST.Range(Cells(J, 2), Cells(J + 9, 39)).Value = Src.[B54:AN63].Value
Next I


End Sub
 

Discussions similaires

Réponses
11
Affichages
298
Réponses
6
Affichages
248

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11