PB exécution code "événementiel" si plusieurs classeur ouvert
Fermé
commentcamarchepresque
Messages postés
3
Date d'inscription
mardi 8 décembre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
-
Modifié par commentcamarchepresque le 8/12/2015 à 11:53
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 12 déc. 2015 à 15:06
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 12 déc. 2015 à 15:06
A voir également:
- PB exécution code "événementiel" si plusieurs classeur ouvert
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
4 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
9 déc. 2015 à 22:45
9 déc. 2015 à 22:45
Bonjour,
Le problème vient peut-être de l'utilisation de ActiveWorkbook au lieu du classeur concerné [ie : Workbooks("MonClasseur")] et aussi de l'utilisation de Sheets("... sans préciser le classeur concerné.
Le problème vient peut-être de l'utilisation de ActiveWorkbook au lieu du classeur concerné [ie : Workbooks("MonClasseur")] et aussi de l'utilisation de Sheets("... sans préciser le classeur concerné.
commentcamarchepresque
Messages postés
3
Date d'inscription
mardi 8 décembre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
10 déc. 2015 à 12:35
10 déc. 2015 à 12:35
Bonjour Patrice et merci,
j'ai essayé ta proposition,
si je modifie comme cela ->
j'ai un message d'erreur de type "l'indice n'appartiens pas à la sélection
merci beaucoup pour ton aide
j'ai essayé ta proposition,
si je modifie comme cela ->
If Not Intersect(Target,Workbooks("monfichier").Sheets("mafeuille").Range("ma plage"))
j'ai un message d'erreur de type "l'indice n'appartiens pas à la sélection
merci beaucoup pour ton aide
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 10/12/2015 à 23:42
Modifié par Patrice33740 le 10/12/2015 à 23:42
C'est donc que soit "monfichier", soit "mafeuille", soit "maplage" n'existe pas !
Pour faire référence à la feuille dont le module contient la macro Worksheet_Change tu peux utiliser simplement Me.
Par exemple :
Pour faire référence à la feuille dont le module contient la macro Worksheet_Change tu peux utiliser simplement Me.
Par exemple :
If Not Intersect(Target, Me.Range("G6:G905")) Is Nothing Then
commentcamarchepresque
Messages postés
3
Date d'inscription
mardi 8 décembre 2015
Statut
Membre
Dernière intervention
11 décembre 2015
Modifié par commentcamarchepresque le 11/12/2015 à 15:14
Modifié par commentcamarchepresque le 11/12/2015 à 15:14
Bonjour Patrick,
j'ai essayé te nouvelle proposition, cela m'a permis (je pense..) d'isolé le problème.
j'ai d'abord appliqué les modifs sur une copie local (sur le bureau) du classeur comme cela ->
ET
là....j'ai testé l'absence de "conflit" un ouvrant un autre classeur(local) -> simulé une activité dessus -> retour sur mon classeur -> résultat ok -> après ce moment de bonheur intence , je l'ai testé un condition réel de fonctionnement.
Le classeur d'origine étant stocké sur un réseau d'entreprise, j'ai appliqué les modifs -> et là....de nouveau "conflit"
En gros, si le classeur est en local, ça fonctionne...mais pas si il est sur le réseau...
Du coup, je n'ai aucune idée de la syntaxe approprié pour pallier au PB...
je vais essayer de faire plus de teste pour confirmer le résultat
merci beaucoup Patrick pour ton aide, vraiment sympa.
++
j'ai essayé te nouvelle proposition, cela m'a permis (je pense..) d'isolé le problème.
j'ai d'abord appliqué les modifs sur une copie local (sur le bureau) du classeur comme cela ->
If Not Intersect(Target, Me.Range("G6:G905")) Is Nothing Then
ET
For Each cell In Me.Range("G6:G905")
là....j'ai testé l'absence de "conflit" un ouvrant un autre classeur(local) -> simulé une activité dessus -> retour sur mon classeur -> résultat ok -> après ce moment de bonheur intence , je l'ai testé un condition réel de fonctionnement.
Le classeur d'origine étant stocké sur un réseau d'entreprise, j'ai appliqué les modifs -> et là....de nouveau "conflit"
En gros, si le classeur est en local, ça fonctionne...mais pas si il est sur le réseau...
Du coup, je n'ai aucune idée de la syntaxe approprié pour pallier au PB...
je vais essayer de faire plus de teste pour confirmer le résultat
merci beaucoup Patrick pour ton aide, vraiment sympa.
++
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 12/12/2015 à 15:07
Modifié par Patrice33740 le 12/12/2015 à 15:07
Bonjour,
il reste peut-être encore des instructions à préciser :
au lieu de
et Activecell est la cellule active de la fenêtre active, donc pas forcement de la feuille concernée :
au lieu de :
Mais attention, Target ne représente pas une cellule unique mais une plage de cellule. Par facilité on peut écrire :
- soit d'ignorer la commande quand Target.Count est >1
- soit de traiter le problème pour chaque cellule de Target.
Cordialement
Patrice
il reste peut-être encore des instructions à préciser :
au lieu de
Sheets("Gestionnaire XXXX").Unprotect ("mdp")écrire :
Me.Unprotect ("mdp")
et Activecell est la cellule active de la fenêtre active, donc pas forcement de la feuille concernée :
au lieu de :
ActiveCell.Offset(-1, 4).Value = resultatécrire :
Target.Offset(-1, 4).Value = resultat
Mais attention, Target ne représente pas une cellule unique mais une plage de cellule. Par facilité on peut écrire :
Target.Cells(1, 1).Offset(-1, 4).Value = resultatcependant, il est préférable
- soit d'ignorer la commande quand Target.Count est >1
- soit de traiter le problème pour chaque cellule de Target.
Cordialement
Patrice