Salut,
Quelques réflexions :
ActiveSheet.Name = "Global"
Ceci peu amener à des résultats inattendus. Si tu a créé un feuille en amont nommes-la lors de la création.
Idem pour cela
If ActiveCell.Row <> lastRow Then
Ici tu déclares lastRow au niveau de la procédure et tu ne l'a pas affecter il est donc toujours égal à 0, l'utilisation de Activecell peut aussi provoquer des résultats inattendus.
Set ws = ThisWorkbook.Sheets("Global")
Ici tu affecte la variable ws c'est bien , mais plus bas tu utilises
Là encore des résultats inattendus peuvent arrivés préfère lui
Et encore mieux null besoin de faire des Select.
Columns("B:B").ColumnWidth = 6#
1 2 3 4
| Dim sheetOld As Worksheet
On Error Resume Next
Set sheetOld = ThisWorkbook.Sheets("OLD")
On Error GoTo 0 |
Ce n'est pas une bonne habitude que d'utiliser On Error pour ce type de contrôle, plus haut tu as fait une boucle tu peux refaire la boucle pour vérifier sa présence ou mieu te créer une fonction.
Set wsGlobal = ThisWorkbook.Sheets("Global")
Ici tu affectes une variable wsGlobal à la feuille "Global" alors que ws fait déjà référence à cette feuille.
lastRowGlobal = wsGlobal.Cells(wsGlobal.Rows.Count, "A").End(xlUp).Row
Puisque la feuille Global contient un tableau structuré utilises les outils adaptés aux tableaux structurés
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Dim MonTableau As ListObject Set MonTableau = ThisWorkbook.Worksheets.Item("Global").ListObject
With MonTableau
Debug.Print .ListRows.Count 'Nombre de lignes
Dim IDCell As Range
For Each IDCell In .ListColumns.Item("ID").DataBodyRange 'boucle sur les cellules de la colonne "ID"
Debug.Print IDCell.Value
Next IDCell
Dim NewRow As ListRow
Set NewRow = .Add 'Ajoute une ligne à la fin
With NewRow
.Range(MonTableau.ListColumns("Total").Index).Value = 100 'Utilisation du nom de la colonne plus explicite que Range("B" & LastRow)par exemple
End With
End With |
Bon et là je ne vais pas plus loin car j'ai du wsGlobal, ws, wsOld
Pour ton erreur je pense que tu dois faire un nettoyage au niveau de tes affectations. ws, wsGlobal et wsOld et supprimer celles qui ne sont plus nécessaires. en les passant à Nothing.
Partager