Macro qui bug après une modification de la feuille

JLT

XLDnaute Nouveau
Bonsoir,

Je reviens vers les pro du monde Excel, qui sont une sacré référence :)

Grace à vous, j'ai pu installer une macro qui reporte le dernier chiffre d'une ligne dans une cellule, et ce pour toutes les lignes de la feuille (à partir de la 10è ligne).
Cela sert à mettre dans une colonne à coté du nom du membre, où il en est dans son abonnement.
Mais j'ai du modifier les dernières colonnes de la feuille et depuis la macro bug désespérément sur : Set plage = Range(Cells(10, y), Cells(10 + z - x, y + zz))
Pourriez vous m'éclairer ?
Tout grand merci
Jean-Luc
Si nécessaire je peux vous mettre une copie de la feuille.
Mais en attendant voici le code de la macro en entier :

Sub test3()
Dim plage As Range
ActiveSheet.UsedRange.Select
x = Selection.Row
y = Selection.Column
z = Selection.Rows.Count
zz = Selection.Columns.Count
Set plage = Range(Cells(10, y), Cells(10 + z - x, y + zz))
plage.Select
If Range("F65536").End(xlUp).Row > 9 Then
Range("F10:F" & Range("F65536").End(xlUp).Row).ClearContents
End If
For n = Selection.Row To Selection.Row + Selection.Rows.Count
If Cells(n, 256).End(xlToLeft).Column > 4 + Selection.Column Then
Cells(n, 256).End(xlToLeft).Copy Destination:=Cells(n, "F")
End If
Next n
Range("A1").Select
Application.ScreenUpdating = True

End Sub
 
Dernière édition:

JLT

XLDnaute Nouveau
Re : Macro qui bug après une modification de la feuille

Je crois avoir trouvé une solution (curieuse...)
En fait, les colonnes qui ne servent pas à la fin,
Je les ai sélectionné, puis je fais "effacer le contenu", mais toujours le bug de la macro.
J'ai alors fait "supprimer" et là la macro a denouveau fonctionné.
Je n'ai pas d'explication mais ca semble être une solution de secours.
Voilà si cela peut aider l'un ou l'autre.
Bonne soirée à tous
 

Bigfish

XLDnaute Occasionnel
Re : Macro qui bug après une modification de la feuille

Salut,

Sub test3()
Dim plage As Range, x as long, y as long, z as long, zz as long
Set plage = ActiveSheet.UsedRange
x = plage.Row
y = plage.Column
z = plage.Rows.Count
zz = plage.Columns.Count

With ActiveSheet
Set plage = .Range(.Cells(10, y), .Cells(10 + z - x, y + zz))

If .Range("F65536").End(xlUp).Row > 9 Then
.Range("F10:F" & .Range("F65536").End(xlUp).Row).ClearContents
End If
For n = x To x + z
If .Cells(n, 256).End(xlToLeft).Column > 4 + y Then
.Cells(n, 256).End(xlToLeft).Copy Destination:=.Range("F" & n)
End If
Next n
.Range("A1").Select
Application.ScreenUpdating = True
End With
End Sub

A+:)
 

Staple1600

XLDnaute Barbatruc
Re : Macro qui bug après une modification de la feuille

Bonsoirr




Si j'ai bien compris ta macro

On peut la simplifier ainsi

Code:
Sub a_tester()
For i = 10 To [G65536].End(xlUp).Row
If Not IsEmpty(Cells(i, 256).End(xlToLeft)) Then
Cells(i, 256).End(xlToLeft).Copy Cells(i, "F")
End If
Next
End Sub

Pour tester copier des donneés dans une feuille
( à partir de la colonne G et ce vers la droite , et sur plusieurs lignes

En lançant la macro, la dernière valeur de chaque ligne est bien recopiée
dans la colonne F (à partir de la ligne 10)
 

JLT

XLDnaute Nouveau
Re : Macro qui bug après une modification de la feuille

Salut Bigfish,
Merci pour ta proposition mais elle bug aussi sur la ligne :
Set plage = .Range(.Cells(10, y), .Cells(10 + z - x, y + zz))

Bonsoir Staple1600,
Merci pour ton essai. Mais il a un défaut, lorsqu'il y a juste le nom et le prénom dans les colonnes A et B ou autre info dans les colonnes C D E, il les mets dans la colonnes F, ce qui n'est pas le but recherché : si pas d'encodage dans les colonnes qui suivent la F il ne faut rien dans la colonne F à la ligne concernée. Par contre si il y a un chiffre, c'est bien le dernier de la ligne qui doit apparaitre dans la colonne F, et ca ta proposition semble bien le faire.

Encore merci pour vos propositions
 

Bigfish

XLDnaute Occasionnel
Re : Macro qui bug après une modification de la feuille

c'est une erreur de depassement de capacité

peux-tu ajouter cette ligne :

msgbox ActiveSheet.UsedRange.address

juste apres celle-ci :

Dim plage As Range, x as long, y as long, z as long, zz as long

et nous donner le resultat
 

Bigfish

XLDnaute Occasionnel
Re : Macro qui bug après une modification de la feuille

un fichier excel est limité a 256 colonnes alors que ton fichier utilise deja les 256 colonnes.

la ligne : zz = Selection.Columns.Count compte le nombre de colonne de la zone utilisé et prend la valeur 256 puis dans la ligne:

Set plage = .Range(.Cells(10, y), .Cells(10 + z - x, y + zz))

tu ajoutes y a 256 donc meme si y = 1 le resutat sera de 257 ! donc depassement de capacité et erreur 1004. As-tu vraiment besoin de 256 colonnes ?

A+
 
Dernière édition:

JLT

XLDnaute Nouveau
Re : Macro qui bug après une modification de la feuille

Bien comme explication, ce qui explique pourquoi quand je fais supprimer les dernieres colonnes inutilisées, la macro refonctionne.
En fait il est malheureusement impossible de mettre toute l'année sur une feuille alors on scinde en
1) de septembre à fin mars
2) de avril à aout
Mais a chaque copie de feuille pour la nouvelle saison, on réencode les dates et c'est là que parfois je dois insérer une colonne ou en supprimer. Et à partir de là la macro foire.
Si on considère que la derniere colone ne sera jamais utilisée que faut il mettre dans la macro pour qu'elle ne cale pas sur 257 ?
Merci
 

Discussions similaires

Réponses
1
Affichages
196
Réponses
2
Affichages
176
Réponses
0
Affichages
176

Statistiques des forums

Discussions
312 495
Messages
2 088 966
Membres
103 993
dernier inscrit
Essens