XL 2013 Problème de Macro qui sont en conflic.

MAt5999

XLDnaute Nouveau
Bonjour à tous.

Au boulot nous faisons nos devis dans un fichier excel.
La personne qui à créer se fichier il y a des années y avait inséré des macros.
Depuis que je le remplace, j'ai fait évoluer le fichier en y ajoutant d'autres macros. (Copier/coller du texte sélectionné dans 2 autres onglet - Supprimer les ligne sélectionnées - Insérer des ligne)

Avant de modifier le fichier, j'ai supprimé les macros existante puis j'ai créer les 3 nouvelles.

Tout va bien quand il n'y a que la nouvelle version du fichier qui est ouverte. Le problème arrive quand j'ouvre d'ancien devis. Les anciennes et les nouvelles macro entre en conflic et les nouvelles ne fonctionnent plus.

Y a t-il un moyen, une astuce pour que les macros n'agissent que dans le fichier où elles sont sans parasiter les autre fichier excel ouvert?

Merci pour votre aide
 

danielco

XLDnaute Accro
Bonjour,

Est-ce que tu peux préciser ce que tu entends par "parasiter" ? Donne un exemple.

Cordialement.

Daniel
 

MAt5999

XLDnaute Nouveau
Bonjour
Dans le nouveau fichier j'ai fait les 3 nouvelles macro. Si j'ouvre un ancien fichier, toutes les macro de l'ancien fichier sont listé dans la fenêtre macro du nouveau fichier
1565357536017.png
.

Si dans mon nouveau fichier je fait ctrl+s pour supprimer une ligne j'obtien le message d'erreur suivant :

1565357673984.png
 

ChTi160

XLDnaute Barbatruc
Bonjour,
je vois que dans l image, il est indique pour ”tous les classeurs ouverts”
a voir !
ensuite le message indique que la feuille cible est protegee
donc la deproteger dans procedure
puis reproteger apres action.
jean marie
 

MAt5999

XLDnaute Nouveau
Bonjour,
je vois que dans l image, il est indique pour ”tous les classeurs ouverts”
a voir !
ensuite le message indique que la feuille cible est protegee
donc la deproteger dans procedure
puis reproteger apres action.
jean marie
Bonjour
Dans la macro j'ai intégré le fait de déproteger le fichier, supprimer la ligne et reproteger le fichier. La macro inserer ligne , CC fonctionnent, il n'y a que supprimer ligne qui bug quand une ancienne version du fichier est ouverte.
 

Roblochon

XLDnaute Accro
Bonjour,
Bonjour au vacancier,

Sans doute serait-il judicieux de réécrire les macros afin quelle sache sur quoi appliquer leurs actions, qui par défaut s'applique au classeur actif, sur la feuille active.

Réécrire dans le style, partout où vos macros ciblent un objet de la hierarchie (Classeur/Feuille/Cellule ou plage de cellules):
VB:
    Dim c As Range
    Dim MaVariable As Long
    With ThisWorkbook.Sheets("Feuil1")
        For Each c In .Range("A1:A100")
            c = c + 1
        Next
    End With
    MaVariable = ThisWorkbook.Sheets("Feuil2").Range("B12").Row
C'est pourquoi, la majorité du temps je le fais systématiquement.

Autre idée: si les macros ne sont plus utiles dans les anciennes versions, les supprimer.


Bon courage
 

MAt5999

XLDnaute Nouveau
Bonjour

Merci, je vais essayer de la réécrire.
Pour l'autre idée, c'est se que je fait pour le moment.

Bonne journée
 

Roblochon

XLDnaute Accro
Re,

Pour renforcer l'idée de @danielco mettre en tête de chaque module obsolète: 'Option Private Module'
Les macros n'apparaîtront plus dans la liste des macros.
Par contre pour les appeler par vba il faudra 'nomdumodule.nomdelamacro'.
Mais si elles sont lancées par vba elle continueront à interagir comme d'habitude sur le classeur actif et la feuille active si aucune mesure ne les en empêche.

Cordialement
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas