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
 

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.
 

Hasco

XLDnaute Barbatruc
Repose en paix
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
 

Hasco

XLDnaute Barbatruc
Repose en paix
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
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 937
Membres
101 844
dernier inscrit
pktla