Incompatibilité d'exécution entre 2 macros

mikael2403

XLDnaute Junior
Bonjour,

Après plusieurs jours de recherche qui ne m'ont menés à rien, je me permets de lancer un appel d'aide.

J'ai créé 2 macros dans un fichier, et à l'exécution de l'une d'entre elle, j'ai un message d'erreur.

Je m'explique :
J'ai 1 macro qui vérifie le contenu de certaines cellules et,
J'ai une autre macro qui exécute une suppression de lignes blanches.

Lorsque j'exécute cette dernière macro j'ai un message d'erreur.
J'ai detecté le problème : Certaines cellules qui sont vérifiés par la 1ere macro peuvent être ensuite supprimés par la 2e macro dans la cadre de la suppression des lignes blanches. (Info via la debogage).

Comment je peux faire pour que les 2 fonctionnent et sans Bug ?

Voici les macros en question :

Controle de cellule :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("I16:I23, J27:J28, J34:J37")) Is Nothing _
And Range("O9") < 0 Then
UserForm2.Show
Application.EnableEvents = False
Target = ""
Target.Select
Application.EnableEvents = True
End If
End Sub

Suppression des lignes blanches
ub PRC_Mail()

Dim i As Integer
For i = Range("A40").End(xlUp).Row To 15 Step -1
If IsEmpty(Cells(i, 1).Value) And i <> 15 And i <> 25 And i <> 29 And i <> 32 And i <> 38 Then Rows(i).Delete
Next i
Application.ActivePrinter = "Amyuni PDF Converter sur LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Amyuni PDF Converter sur LPT1:", Collate:=True
End Sub


Je vous remercie d'avance pour votre aide.

Mikael
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Incompatibilité d'exécution entre 2 macros

Bonjour Mikael, bonjour le forum,

Peut-être cette solution fonctionnera-t-elle ??? Non testée.

Code:
ub PRC_Mail()
Dim i As Integer
For i = Range("A40").End(xlUp).Row To 15 Step -1
    Select Case i
        Case 15, 25, 29, 32, 38
            GoTo suite
        Case Else
            If IsEmpty(Cells(i, 1).Value) Then Rows(i).Delete
    End Select
suite:
Next i
Application.ActivePrinter = "Amyuni PDF Converter sur LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Amyuni PDF Converter sur LPT1:", Collate:=True
End Sub
 
Dernière édition:

mikael2403

XLDnaute Junior
Re : Incompatibilité d'exécution entre 2 macros

Bonsoir Robert,

Je te remercie pour ta réponse.

j'ai fais le test avec la macro, mais elle ne fonctionne pas.

J'ai un message d'erreur (Erreur de type).

j'ai omis de préciser que dans ma 1ere macro il s'agit de :
Private Sub Worksheet_Change(ByVal Target As Range)

et non :

Private Sub Worksheet_SelectionChange(ByVal Target As Range).

Y a-t-il une autre solution ?

Merci d'avance pour votre aide.

Mikael.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Incompatibilité d'exécution entre 2 macros

Bonjour Mikael, bonjour le forum,

Il est difficile de cerner ton problème sans avoir le fichier. Je ne pense pas que le fait que la première macro soit sur l'événement Change plutôt que sur l'événement SelectionChange modifie la suite du code. Ce qui m'étonne dans la première macro c'est cet UserForm2. Peut-être le code qu'il engendre empêche le bon fonctionnement de la seconde macro ? L'idéal serait ton fichier en pièce jointe ou un fichier exemple basé sur ton fichier si il est trop volumineux.
 

pierrejean

XLDnaute Barbatruc
Re : Incompatibilité d'exécution entre 2 macros

bonjour Mikael

Salut Robert :)

voici comment je procede en cas de Worksheet_change

Controle de cellule :

Code:
Public flag as Boolean
________________________
 
Private Sub Worksheet_Change(ByVal Target As Range)
If flag then exit sub
flag=true
If Not Application.Intersect(Target, Range("I16:I23, J27:J28, J34:J37")) Is Nothing _
And Range("O9") < 0 Then
UserForm2.Show
'Application.EnableEvents = False
Target = ""
Target.Select
'Application.EnableEvents = True
End If
flag=false
End Sub
 
[U]Suppression des lignes blanches[/U]
sub PRC_Mail()
flag=true
Dim i As Integer
For i = Range("A40").End(xlUp).Row To 15 Step -1
If IsEmpty(Cells(i, 1).Value) And i <> 15 And i <> 25 And i <> 29 And i <> 32 And i <> 38 Then Rows(i).Delete
Next i
Application.ActivePrinter = "Amyuni PDF Converter sur LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Amyuni PDF Converter sur LPT1:", Collate:=True
flag=false
End Sub

nb :
1 ) public flag a mettre de preference dans un module
2) A tester bien entendu !!!
 

mikael2403

XLDnaute Junior
Re : Incompatibilité d'exécution entre 2 macros

Bonjour,

Je ne peux pas mettre le code dans un module car la 1ere macro s'éxecute en temps réel lors de modification dans les cellules alors que la 2e macro s'excécute à la fin pour lancer une impression et supprimer des lignes.

J'ai fais le test et cela ne fonctionne pas.

Dans ma 1er macro le :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) fonctionne correctement et sans messages d'erreur alors que :

Private Sub Worksheet_Change(ByVal Target As Range) me renvoit un message d'erreur dès la 1ere suppression de ligne lorsque j'éxécute la 2nd macro.

Comment faire pour que la 2nd macro soit compatible avec la 1ere et avec l'évènement CHANGE.

Sinon, y a-t-il un moyen d'utiliser l'évènement SELECTIONCHANGE et de faire en sorte qu'au changement de cellules, les informations de la cellule précédemment sélectionnée soient effacées ?

Je vous remercie d'avance pour votre aide.

Mikael.
 

pierrejean

XLDnaute Barbatruc
Re : Incompatibilité d'exécution entre 2 macros

re

il ne s'agit pas de mettre les macros dans un module mais

uniquement le

public flag as boolean

Il serait par ailleurs interessant de connaitre l'erreur renvoyée ainsi que la ligne qui l'a provoquée (surlignée en jaune )

Enfin il nous sera toujours plus aisé de travailler sur un fichier exemple et par la même de te donner plus rapidement satisfaction
fichier comportant uniquement les elements posant probleme avec quelques données representatives non confidentielles < 48 k (zippé si necessaire)
 
Dernière édition:

mikael2403

XLDnaute Junior
Re : Incompatibilité d'exécution entre 2 macros

Salut pierrejean,

Tout d'abord merci pour ta réponse aussi rapide.

J'ai fais le test des macros sur un fichier test. ça a l'air de fonctionner.
Je vais tester Demain sur le fichier complet.

Merci encore pour ton aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 234
Messages
2 086 475
Membres
103 226
dernier inscrit
smail12