treza88
XLDnaute Occasionnel
Bonjour à tous,
J'ai un problème quand j'essaie de réaffecter une variable objet avec une autre valeur dans une boucle, la variable objet ne semble pas prendre la nouvelle valeur, c'est toujours la première qui reste active.
Voici le début de mon code, dans lequel je ne comprends pas ma variable wsSource et sourcePlage reste avec la première valeur affecté :
J'ai un problème quand j'essaie de réaffecter une variable objet avec une autre valeur dans une boucle, la variable objet ne semble pas prendre la nouvelle valeur, c'est toujours la première qui reste active.
Voici le début de mon code, dans lequel je ne comprends pas ma variable wsSource et sourcePlage reste avec la première valeur affecté :
VB:
Dim num As Integer
num = 0
Dim wbDest As Workbook
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim filePath As String
Dim sourcePlage As Range
Dim destRange As Range
Dim plageUnion As Range
Dim srt As Range
Dim feuille As String
' Permet à l'utilisateur de sélectionner le fichier source
filePath = "C:\Users\THOMESHE\Documents\Sauvegarde Dev\Fichier Excel\Plan de charge\14_11_2025\Plan de charge.xlsm"
If filePath <> "False" Then ' Ouvrir le classeur source en lecture seule
Set wbSource = Workbooks.Open(Filename:=filePath, ReadOnly:=True)
Set wsSource = wbSource.Sheets("Terminés")
For i = 1 To 2
If i = 2 Then
wsSource = wbSource.Sheets("Charges")
End If
Application.CutCopyMode = False
' Définir la plage à copier
Set sourcePlage = wsSource.Range("A6:" & Cells(Rows.Count, 3).End(xlUp).Address, "E6:" & Cells(Rows.Count, 7).End(xlUp).Address) ' Remplacez par votre plage de cellules
nbLignesPlage = 0
nbLignesPlage = sourcePlage.Rows.Count
MsgBox nbLignesPlage
Stop
' Boucler sur chaque ligne de la plage
For Each ligne In sourcePlage.Rows
'MsgBox ligne.Address
'Stop
lign = False
' Exécuter une action sur la cellule courante
For Each cell In ligne.Cells
If Split(cell.Address, "$")(1) = "A" Then
'MsgBox cell.Text & " " & cell.Address
' Stop
If Trim(cell.Text) = "T" Or Trim(cell.Text) = "P" Or Trim(cell.Text) = "t" Or Trim(cell.Text) = "p" Then
num = num + 1
lign = True
Set strRng = ligne
' MsgBox strRng.Address
End If
End If
'Stop
Next cell
If lign Then
'MsgBox "ok"
If num = 1 Then
Set plageUnion = strRng
Else
plageUnion = Union(plageUnion, strRng)
End If
'MsgBox plageUnion.Address
'Stop
End If
Next ligne
Set sourcePlage = Nothing
Next i
Dernière édition: