Bonjour à tous,
Savez-vous pourquoi la macro suivante ne fonctionne ?
Alors qu'en remplaçant le code dans le Do ... Loop par :
ou par :
Cela fonctionne.
Voilà, je reste en l'attente de vos commentaires.
Merci à l'avance,
Youri
PS: Toute la différence se situe au niveau de la définition des objets Range :
Set MaVar = MyWorkbook(i).Worksheets("Feuil1").Range(Cells(1, 1), Cells(10, 10)) fait planter le code
alors que
Set MaVar = MyWorkbook(i).Worksheets("Feuil1").Range("A1:J10")
ou
MyWorkbook(i).Worksheets("Feuil1").Cells(i2, i3)
fonctionne.
Savez-vous pourquoi la macro suivante ne fonctionne ?
Code:
Option Explicit
Option Base 1
Sub test()
Dim MyWorkbook(2) As Workbook
Dim MaVar As Range
Dim MonTest As Range
Dim i As Byte, i2 As Byte, i3 As Byte
Dim cel As Range
Set MyWorkbook(1) = Workbooks.Open("C:\Documents and Settings\Administrateur\Bureau\Nouveau dossier\Nouveau Feuille de calcul Microsoft Excel (2).xls")
Set MyWorkbook(2) = Workbooks.Open("C:\Documents and Settings\Administrateur\Bureau\Nouveau dossier\Nouveau Feuille de calcul Microsoft Excel (3).xls")
i = 1
Do While i <= UBound(MyWorkbook)
Set MaVar = MyWorkbook(i).Worksheets("Feuil1").Range(Cells(1, 1), Cells(10, 10))
For Each cel In MaVar
If i = 1 Then
cel.Value = 1
Else
cel.Value = 2
End If
Next cel
i = i + 1
Loop
End Sub
Alors qu'en remplaçant le code dans le Do ... Loop par :
Code:
Set MaVar = MyWorkbook(i).Worksheets("Feuil1").Range("A1:J10")
For Each cel In MaVar
If i = 1 Then
cel.Value = 1
Else
cel.Value = 2
End If
Next cel
i = i + 1
Code:
For i2 = 1 To 10
For i3 = 1 To 10
If i = 1 Then
MyWorkbook(i).Worksheets("Feuil1").Cells(i2, i3).Value = 1
Else
MyWorkbook(i).Worksheets("Feuil1").Cells(i2, i3).Value = 2
End If
Next i3
Next i2
i = i + 1
Cela fonctionne.
Voilà, je reste en l'attente de vos commentaires.
Merci à l'avance,
Youri
PS: Toute la différence se situe au niveau de la définition des objets Range :
Set MaVar = MyWorkbook(i).Worksheets("Feuil1").Range(Cells(1, 1), Cells(10, 10)) fait planter le code
alors que
Set MaVar = MyWorkbook(i).Worksheets("Feuil1").Range("A1:J10")
ou
MyWorkbook(i).Worksheets("Feuil1").Cells(i2, i3)
fonctionne.
Dernière édition: