Bug d'une macro (L'objet invoqué s'est déconnecté de ses clients)

michaelexcel

XLDnaute Nouveau
Bonjour à tous,

Je découvre pas à pas la VBA. Je m'amuse bien mais là je ne comprends pas ce qui se passe.

J'ai une sub qui fonctionnait à merveille. Hélas en ajoutant le passage (en gras ci-dessous), excel plante complètement. Le déboggage indique sur le .Range("D4:K24").Copy le message suivant : "Lobjet s'est déconnecté de ses clients".

J'ai testé cette partie (en gras) du code dans une sub séparée et là ça fonctionne.

Pour info, la sub se déclenche automatiquement dès que l'on modifie le tableau situé dans ("AFFICHER").Je vous mets la sub correspondante tout en bas.

Merci !!

Sub Sauver ()

Application.ScreenUpdating = False

With Sheets("ListeModif")

.Columns("C:J").Copy
Sheets("Inscriptions").Columns("E:L").PasteSpecial Paste:=xlPasteValues
End With

With Sheets("AfficherModif")

.Range("D4:K24").Copy
Sheets("AFFICHER").Range("D4:K24").PasteSpecial Paste:=xlPasteFormats
End With



Application.CutCopyMode = 0
Range("H2").Select

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

Dim v
Set v = ActiveCell

If Not Application.Intersect(Target, Range("F2")) Is Nothing Then
Afficher
End If

If Not Application.Intersect(Target, Range("D4:K24")) Is Nothing Then
Sauver
End If

v.Select

End Sub
 

Roland_M

XLDnaute Barbatruc
Bonsoir,

essayer en rajoutant Application.CutCopyMode = 0 entre les deux copy
voir aussi inverser l'ordre des deux copy !? en premier celui en gras.

si pas essayer comme ceci:
Application.CutCopyMode = 0: Range("A1").select
ou encore:
Application.CutCopyMode = 0: Range("A1").select: Doevents

mais malgré tout ce genre d'erreur pourrait venir suite à la manipulation du tableau !?
sans classeur on ne peut faire d'essai !?


EDIT: juste pour info, ici:
If Not Application.Intersect(Target, Range("F2")) Is Nothing Then
Afficher
End If
If Not Application.Intersect(Target, Range("D4:K24")) Is Nothing Then
Sauver
End If

tu peux faire simplement
If Not Application.Intersect(Target, Range("F2")) Is Nothing Then Afficher
If Not Application.Intersect(Target, Range("D4:K24")) Is Nothing Then Sauver
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Bonsoir,

Voir dans le code du Module3, j'ai rajouté ceci
Application.Calculation = . . .

Voir dans le code feuille "AFFICHER" j'ai rajouté ceci
Application.EnableEvents = . . .
très important car ça boucle à chaque fois que tu sélectionnes une cellule par le code, d'où le plantage !

par contre je ne comprends pas, avec Excel 2007, le poids du fichier à presque doublé !?
 

Pièces jointes

  • Atelier - Formation_Rol.xlsm
    2.6 MB · Affichages: 22
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 771
Messages
2 112 769
Membres
111 653
dernier inscrit
Vanie0082