[VBA] Problème double macro

Problème double macro [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 12-05-2009 à 16:16:12    

Bonjour à tous et excusez-moi de venir vous déranger pour mon problème. :jap:  
 
Je suis en train de créer un classeur Excel contenant plusieurs feuilles différentes les unes des autres, chacune contenant des tableaux. Sur certaines feuilles, j'ai rajouté du code pour effectuer différentes actions lorsque l'on modifie certaines cellules.
Voici en exemple le code de la feuille "Standard de développement" qui par la suite me posera problème :
 
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(ActiveCell, Range("F12:F40" )) Is Nothing Then
    If ActiveCell.Value = "Réalisé" Then
        ActiveCell.Offset(0, 1).Value = 1
    End If
ElseIf Not Intersect(ActiveCell, Range("G12:G40" )) Is Nothing Then
    If ActiveCell.Value = 1 Then
        ActiveCell.Offset(0, -1).Value = "Réalisé"
    ElseIf ActiveCell.Value <> 0 And ActiveCell.Value <> 1 Then
        ActiveCell.Offset(0, -1).Value = "En-Cours"
    End If
ElseIf Not Intersect(ActiveCell, Range("H12:H40" )) Is Nothing Then
    If ActiveCell.Value <> "" Then
        ActiveCell.Offset(0, -1).Value = 1
        ActiveCell.Offset(0, -2).Value = "Réalisé"
    End If
End If
End Sub

 
J'ai également rajouté un bouton sur la 1ère feuille qui déclenche une macro qui va nettoyer l'ensemble des tableaux se trouvant dans mon classeur.
 
Private Sub BoutonNouveauProjet_Click()
    Sheets("Standard de développement" ).Range("C9:L9" ).ClearContents
    Sheets("Standard de développement" ).Range("F12:L40" ).ClearContents
End Sub

 
Malheureusement, à chaque fois que j'effectue ma macro de nettoyage de tableau, j'assiste tout le temps à un message d'erreur (alors qu'auparavant, lorsque je n'avais pas mis de code sur la feuille "Standard de développement", il n'y avait aucun problème).
 
Erreur d'exécution '1004' :
La méthode 'Intersect' de l'objet '_Global' a échouée.
 
Je n'arrive pas à comprendre à quoi est dûe cette erreur. :pt1cable:  Quelqu'un serait-il en mesure de m'éclairer ?
 
D'avance merci à tous ceux qui auront eu la patience de me lire.
 
Cordialement.
 
MA

Reply

Marsh Posté le 12-05-2009 à 16:16:12   

Reply

Marsh Posté le 13-05-2009 à 11:50:19    

Je pense qu'il faut spécifier chaque feuille a tes fonctions intersect...
Feuil1.intersect ....
Essaye de ne pas utiliser les activecells, cela fait perdre du temps à tes programmes

Reply

Marsh Posté le 13-05-2009 à 13:48:34    

nathanc a écrit :

Je pense qu'il faut spécifier chaque feuille a tes fonctions intersect...
Feuil1.intersect ....
Essaye de ne pas utiliser les activecells, cela fait perdre du temps à tes programmes


Merci nathanc. J'ai tenté de résoudre en spécifiant chaque feuille à mes fonctions intersect en début de module, mais ça n'a rien donné...  :(  
Faute de mieux, j'ai contourné le problème avec Application.EnableEvents = False qui désactive l'exécution des autres macros pendant l'exécution de celle-ci. En attendant p-ê de trouver la raison du bug initial...
En revanche, on me dit en effet assez souvent qu'ActiveCell est à éviter si on ne veut pas perdre du temps... Mais par quoi puis-je le remplacer ?
Encore merci pour ton aide. :jap:  
Cordialement.
MA

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed