PB exécution macro événementiel si autre fichier excel ouvert...

maude

XLDnaute Nouveau
Bonsoir messieurs dames,

j'ai un petit souci avec un code événementiel de type "sélection change". Lorsque j'ouvre mon fichier "événement" seul, le code fonctionne super bien, le PB se produit lorsque j'ouvre un autre fichier "X" excel en parallèle, à partir de là, mon code ne s'exécute plus...dans le cas ou j'ouvre d’abord un fichier "X" et que j'ouvre mon fichier "événement" après, ça fonctionne tant que je n'ai aucune activité sur le fichier "X", si activité sur fichier "X" alors fichier "événement" ne fonctionne plus :eek: ...,dans ce cas, je suis obligée de fermer excel et de ré-ouvrir mon fichier "événement" (seul bien-sur...:rolleyes:) pour que les événements lié à ce fichier fonctionne de nouveau.

mon fichier est actuellement sur un réseaux entreprise, j'ai malheureusement oubliée d'enregistrer une copie en local :mad: je suis donc dans l'incapacité de vous fournir le code source (de mieux en mieux lol). en souhaitant que se ne soit pas trop gênant pour la compréhension et la résolution de mon PB (au cas ou je le posterais plus tard).

1/ est ce normal ?
2/ existe t' il une parade ?

Merci par avance aux personnes qui voudrons bien se pencher sur mon problème.
Bisous à tous.
 

st007

XLDnaute Barbatruc
Re : PB exécution macro événementiel si autre fichier excel ouvert...

Bonsoir,
Pour exemple, on précise active workbook ou this workbook
Code:
Private Sub Workbook_Activate()
ActiveWorkbook.Worksheets("Autrefeuille").Activate
ActiveWorkbook.Worksheets("Carto").Activate
End Sub
 

maude

XLDnaute Nouveau
Re : PB exécution macro événementiel si autre fichier excel ouvert...

Salut et merci,
tu veux dire par là que mon -> "Private sub Worksheet_change (ByVal Target AS Range)"
ce transforme en -> "Private sub Workbook_change (ByVal Target AS Range)" ???
Du coup si je comprend bien...mes références qui suivent menant à une cellule doivent pointer vers un fichier; une feuille; et une cellule...
Pour actuellement -> for each cell in range ("maplage")
devient -> for each cell in ActiveWorkbook.Worksheets("mafeuille").range ("maplage")


j'ai retrouvé un bout de code sur un txt
je suis désolé, je maîtrise pas très bien l'utilisation du forum, comment fais tu pour mettre ton code dans un cadre ?

merci beaucoup pour ta réponse rapide
 

st007

XLDnaute Barbatruc
Re : PB exécution macro événementiel si autre fichier excel ouvert...

re,
pour la mise du code en cadre, j'utilise au lieu d' "envoyer la réponse rapide" "aller en mode avancé" puis clic sur le dièse " # ".
ce qui a pour effet de placer : [*CODE][*/CODE] sans les astériques et tu indique ton code, ta formule entre les balises, genre :
[*CODE]
sub

end sub
[*/CODE]
et mieux s'il s'agit d'une macro avec [*highlight=vba] ICI CODE VBA [*/highlight]

pour ta question précise,
Private sub Worksheet_change (ByVal Target AS Range) peut rester
mais "maplage" serait défini par thisworkbook.sheets("toto").range("A3:A7")
ou encore if not intersect thisworkbook.sheets(" .......
 

maude

XLDnaute Nouveau
Re : PB exécution macro événementiel si autre fichier excel ouvert...

Bonjour,

merci pour ces renseignement

alors pour commencer, voila le code en question: "j'essaie le cadre"

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resultat As String
Sheets("Gestionnaire audit").Unprotect ("mdp")
If Not Intersect(Target, Range("G6:G905")) Is Nothing Then
      'instructions
resultat = InputBox("Veuillez indiquer dans le champ ci-dessous le XXXXXXXXXXX", "saisie écart(s) audit", "0")
ActiveCell.Offset(-1, 4).Value = resultat
End If
Dim cell As Range
For Each cell In Range("G6:G905")
If cell = "" And cell.Offset(0, -1) <> "" And cell.Offset(0, -5) <> 1 And cell.Offset(0, 5) <> "" Then
Dim Rep As Integer
    Rep = msgbox("Le prochain XXXXXXXX" & cell.Offset(0, -3) & " au XXX" & cell.Offset(0, -2) & " prévu le " & cell.Offset(0, 5) & " doit être réalisé par XXXXXXXXXXX." & Chr(10) & Chr(10) & " - cliquer sur OK pour prévenir par E-mail votre partenaire XXXXX." _
    & Chr(10) & Chr(10) & " - cliquer sur annuler pour sortir de la procédure ", vbOKCancel + vbInformation, "Information")
    If Rep = vbOK Then
        ' ici le traitement si réponse positive
        cell.Offset(0, -5) = 1
        Call Mail_auto
    Else
        ' ici le traitement si réponse négative
        Exit Sub
    End If
    End If
    Next
End Sub

Sans vouloir abuser, serait- il possible de me donner une piste par rapport à mon code.

j'ai essayé de modifier la ligne -> If Not Intersect(Target, Range("G6:G905")) Is Nothing Then
en faisant -> If Not intersect thisworkbook.sheets ("gestionnaire audit")(Target, Range("G6:G905")) Is Nothing Then
mais un message me dit qu'il manque un "then (que j'ai en bout de ligne) ou un "Go"

merci par avance
++
 

st007

XLDnaute Barbatruc
Re : PB exécution macro événementiel si autre fichier excel ouvert...

re,
et si tu ajoutais la condition : Sh.Name = "Gestionnaire audit"
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resultat As String
Sheets("Gestionnaire audit").Unprotect ("mdp")
If Not Intersect(Target, Range("G6:G905")) And Sh.Name = "Gestionnaire audit" Is Nothing Then
      'instructions
resultat = InputBox("Veuillez indiquer dans le champ ci-dessous le XXXXXXXXXXX", "saisie écart(s) audit", "0")
ActiveCell.Offset(-1, 4).Value = resultat
End If
Dim cell As Range
For Each cell In Range("G6:G905")
If cell = "" And cell.Offset(0, -1) <> "" And cell.Offset(0, -5) <> 1 And cell.Offset(0, 5) <> "" Then
Dim Rep As Integer
    Rep = MsgBox("Le prochain XXXXXXXX" & cell.Offset(0, -3) & " au XXX" & cell.Offset(0, -2) & " prévu le " & cell.Offset(0, 5) & " doit être réalisé par XXXXXXXXXXX." & Chr(10) & Chr(10) & " - cliquer sur OK pour prévenir par E-mail votre partenaire XXXXX." _
    & Chr(10) & Chr(10) & " - cliquer sur annuler pour sortir de la procédure ", vbOKCancel + vbInformation, "Information")
    If Rep = vbOK Then
        ' ici le traitement si réponse positive
        cell.Offset(0, -5) = 1
        Call Mail_auto
    Else
        ' ici le traitement si réponse négative
        Exit Sub
    End If
    End If
    Next
End Sub
 

maude

XLDnaute Nouveau
Re : PB exécution macro événementiel si autre fichier excel ouvert...

re...

merci pour ta proposition,
j'ai copié collé ton code à la place du mien, il me renvoie une erreur de type "bloc with non défini" sur la ligne
Code:
If Not Intersect(Target, Range("G6:G905")) And Sh.Name = "Gestionnaire audit" Is Nothing Then

De ce que j'ai compris en recherchant sur le forum, le "ShName" permet de "pointer" vers une feuille (avec syntaxe simplifié....) -> pourquoi il n'y a pas de déclaration lié au "ShName" dans la première ligne de la macro
celle là ->
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
en ce qui concerne le reste du code, j'aurais eu tendance à penser (suite à ton premier post) que la ligne
Code:
For Each cell In Range("G6:G905")
ce transformais en
Code:
For Each cell in ActiveWorkbook.Worksheets("mafeuille").range ("G6:G905")
ou
Code:
For Each cell in thisworkbook.Worksheets("mafeuille").range ("G6:G905")

cela changet'il quelque chose ?

je m'excuse par avance auprès des puristes pour mon manque de vocabulaire VBA .

merci beaucoup à toi pour ton aide...vraiment cool
 

maude

XLDnaute Nouveau
Re : PB exécution macro événementiel si autre fichier excel ouvert...

Bonjour,

j'ai modifié mon code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resultat As String
 Sheets("Gestionnaire audit").Unprotect ("mdp")
If Not Intersect(Target, ActiveWorkbook.Sheets("Gestionnaire XXXX").Range("G6:G905")) Is Nothing Then
       'instructions
resultat = InputBox("Veuillez indiquer dans le champ ci-dessous le nombre XXXXXX", "saisie écart(s) audit", "0")
 ActiveCell.Offset(-1, 4).Value = resultat
End If
Dim cell As Range
For Each cell In ActiveWorkbook.Sheets("Gestionnaire audit").Range("G6:G905")
If cell = "" And cell.Offset(0, -1) <> "" And cell.Offset(0, -5) <> 1 And cell.Offset(0, 5) <> "" Then
Dim Rep As Integer
     Rep = msgbox("Le prochain audit procces de l'opérateur " & cell.Offset(0, -3) & " au poste " & cell.Offset(0, -2) & " prévu le " & cell.Offset(0, 5) & " doit être réalisé par un XXXXXX." & Chr(10) & Chr(10) & " - cliquer sur OK pour prévenir par E-mail votre partenaire XXXXX." _
     & Chr(10) & Chr(10) & " - cliquer sur annuler pour sortir de la procédure ", vbOKCancel + vbInformation, "Information")
     If Rep = vbOK Then
         ' ici le traitement si réponse positive
        cell.Offset(0, -5) = 1
         Call Mail_auto
     Else
         ' ici le traitement si réponse négative
        Exit Sub
     End If
     End If
     Next
End Sub

malheureusement avec le meme résultat-> fonctionne que si il n'y a pas d'autre fichier ouvert.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 420
Membres
103 205
dernier inscrit
zch