Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Spoon86

XLDnaute Nouveau
Bonjour,

je souhaite importer les données (copier/coller par exemple) contenues dans une feuille dans une feuille d'un autre classeur à l'aide d'une macro.
Cette étape est réussie. Cependant, je constate que ma macro, en plus d'importer les données, lancent toutes les macros qui sont déjà contenues dans la feuille d'origine.
Résultats toutes les macros du classeur à ouvrir se lancent et un message d'erreur apparaît me signalant que j'utilise trop de données ou d'applications en même temps.

Avez-vous une idée pour importer les données d'une feuille (à l'aide d'une macro d'ouverture d'un classeur) sans que cette macro ne lance les macros présentes dans le classeur que je souhaite ouvrir ?

Merci d'avance pour votre aide.
Spoon.
 

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Bonjour et merci pour ta réponse Pierrot.

Légèrement novice en vba, je n'arrive pas à placer correctement le code que tu m'as laissé dans celui que j'ai constitué (voir fichier joint).

As-tu une idée ?
Merci.
 

Pièces jointes

  • Classeur1.xls
    15.5 KB · Affichages: 160
  • Classeur1.xls
    15.5 KB · Affichages: 169
  • Classeur1.xls
    15.5 KB · Affichages: 173

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

c'est mieux avec la macro (enregistrée ! )
désolé...

Spoon.
:(
 

Pièces jointes

  • Classeur1.xls
    26 KB · Affichages: 171
  • Classeur1.xls
    26 KB · Affichages: 181
  • Classeur1.xls
    26 KB · Affichages: 178

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Re

presque bien placé :
Code:
    Application.EnableEvents = False
    Set wbks = Workbooks.Open(nom)
    wbks.Sheets("origine1").Range("A1:F" & wbks.Sheets("origine1").Range("A65536").End(xlUp).Row).Copy wbkc.Sheets("destination1").Range("A1")
    wbks.Close 0
    Application.EnableEvents = True
j'ai simplement déplacé la réactivation des événements après la fermeture du classeur, il peut y avoir des procédures de lacées au travers de cet événement...
 

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Merci Pierrot,

mais les macros du classeur "origine" se lancent toujours: je les vois défiler dans la fenêtre de code vba...
???

Je ne comprends vraiment aps pourquoi !
Spoon.
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Re,

comprends pas chez moi le code donné fonctionne dans ta macro... mais quand tu dis :
je les vois défiler dans la fenêtre de code vba...
c'est dans l'éditeur vba, pas sur Excel... test en mettant un msgbox dans la macro :
Code:
MsgBox "ok"

la boîte de dialogue ne devrait pas s'afficher...
 

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Re,

je viens d'insérer MsgBox "ok" entre Application.EnableEvents = False (....) et Application.EnableEvents = True

Le message "ok" apparaît mais également et toujours le message d'erreur me signalant que la "tâche ne peut être terminée avec les ressoureces disponibles. Sélectionnez moins de données ou fermez des applications". Au passage, j'obtiens quand même les données souhaitées mais avoir 2 ou 3 messages d'erreur identiques (voir ci-dessus) peut supposer qu'il y a eu un problème lors de l'importation des donénes et les résultats finaux.

Et en effet, c'est bien dans la fenêtre d'exécution des macros (sous vba) que je vois se lanccer les différentes macros qui sont présentes dans mon fichier d'origine.

Voir fichier en PJ.

Spoon.
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Non, le "msgbox", c'est dans le classeur que tu vas ouvrir qu'il faut le placer.... pour ton message d'erreur essaye de fermer tous tes classeurs ouverts, puis fermer aussi excel, tous les excel si tu as plusieurs instances de l'appli d'ouvertes....
 

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Autant pour moi. Le MsgBox est maintenant placé correctement dans mon classeur "origine" et n'apparaît pas lorsque j'importe les données souhaitées vers le classeur destination.
Par contre, les macros du classeur origine semblent toujours s'activer. Un exemple: des graphiques sont créés dans origine à l'aide d'une macro. Importer les données vers le classeur "destination" importe également les graphiques, chose que je ne souhaite pas faire.

Le message "d'erreur" apparaît toujours...

Spoon
 

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Par contre, les macros du classeur origine semblent toujours s'activer. Un exemple: des graphiques sont créés dans origine à l'aide d'une macro.

re, comprends plus... met peut être que classeur que tu ouvres en pj, enfin à minima... surtout le code....
 

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Bonjour Pierrot, le forum,

Je pense avoir compris.
En fait, le fait d'importer les données depuis un classeur "origine" avec le code wbks.Sheets("marchetendue").Range("A1:F" & wbks.Sheets("marchetendue").Range("A65536").End(xlUp).Row).Copy wbkc.Sheets("import").Range("A1") implique, en plus des valeurs, d'importer les formules qui sont attachées aux cellules dans mon classeur origine.
Le même code, qui permette d'importer uniquement les valeurs existe-t-il ?


Je viens d'y ajouter .Value en fin de code. Sans succès...
:(

Spoon.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Bonjour,

pour coller uniquement les valeurs, essaye un collage spécial, exemple ci-dessous :
Code:
Range("A2").Copy
Range("B2").PasteSpecial xlPasteValues

bon après midi
@+
 

Spoon86

XLDnaute Nouveau
Re : Ouvrir un classeur avec une macro sans lancer les macros du classeur à ouvrir

Re Pierrot,

si je te suis bien mon code devient:
wbks.Sheets("marchetendue").Range("A1:F" & wbks.Sheets("marchetendue").Range("A65536").End(xlUp).Row).Copywbkc.Sheets("import").Range("A1").PasteSpecial xlPasteValues
wbks.Sheets("marchetype").Range("A1:B" & wbks.Sheets("marchetype").Range("A65536").End(xlUp).Row).Copy wbkc.Sheets("import").Range("K1").PasteSpecial xlPasteValues


J'ai cependant un message d'erreur pour la seconde ligne.
Par ailleurs, les données à importer sont situées dans deux feuilles distinctes du même classeur. Est-il vraiment possible de poser les deux lignes de codes l'une après l'autre ? Le pb peut peut être venir de là ...

Spoon.
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 120
Membres
103 479
dernier inscrit
Compta