VBA : problème avec la méthode Paste

__xD

XLDnaute Nouveau
Bonjour à tous,

Je souffre d'un petit souci avec la méthode Paste. J'essaie d'effectuer la même opération que beaucoup de gens : copier la feuille d'un classeur vers un autre classeur, et je voudrais maintenir le lien pour que si la feuille est modifiée dans un classeur, la modification soit effective dans le fichier d'origine.
Voici le code que j'utilise :
Code:
Sub AjoutAnnexe()

Dim classeurSource As Workbook, classeurDestination As Workbook
Set classeurDestination = ThisWorkbook
Set classeurSource = Application.Workbooks.Open(Application.GetOpenFilename(), , True)

classeurDestination.Activate
Sheets.Add After:=Sheets(Sheets.Count)
classeurSource.Sheets("Sheet1").Cells.Copy 
classeurDestination.Sheets(Sheets.Count).Paste Link:=True


classeurSource.Close False

End Sub

Le problème est le suivant : le programme bug, et me copie des 0 à la place de toutes les cellules vides :confused:
Après réflexion, je pense que cela vient du fait que j'utilise Cells plutôt qu'une sélection précise de cellules pour la copie. Je voudrais qu'il copie les cellules qui contiennent une information et laisse les autres tranquilles :D
Le problème est que le fichier à copier n'est pas fixe, parfois il peut contenir deux cellules, parfois une centaine (c'est l'utilisateur qui sélectionne au début de la macro).
Je débute en VBA et je ne sais donc pas comment procéder, ça ne doit pas être grand chose...
De plus, écrire Link:=True est-il suffisant pour maintenir le lien entre les deux fichiers ??

Merci de votre aide :)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA : problème avec la méthode Paste

Re

Test OK ici
Code:
Sub AjoutAnnexe()
Dim classeurSource As Workbook, classeurDestination As Workbook
Set classeurDestination = ThisWorkbook
Set classeurSource = Application.Workbooks.Open(Application.GetOpenFilename(), , True)


With classeurDestination
    .Activate
    Sheets.Add After:=Sheets(Sheets.Count)
    classeurSource.Sheets(1).UsedRange.Copy
    .Sheets(Sheets.Count).Paste Link:=True
End With


classeurSource.Close False
End Sub
 

__xD

XLDnaute Nouveau
Re : VBA : problème avec la méthode Paste

Bonsoir,

Merci, cela fonctionne pour le rajout de l'annexe, mais il continue de me remplir les cellules inutiles par des zéros... :confused:
Et de plus, j'ai changé une valeur dans l'onglet rajouté, mais la modification ne s'effectue pas dans le fichier d'origine... :(
 

Staple1600

XLDnaute Barbatruc
Re : VBA : problème avec la méthode Paste

Re

__xD
Ne crois-tu pas qu'un fichier exemple (ici en l’occurrence deux fichiers exemples simplifiés) seraient dès à présent les bienvenus dans ton fil de discussion, non ?

Tu dois savoir qu'on peut joindre des fichiers sur le forum, non ?
 

__xD

XLDnaute Nouveau
Re : VBA : problème avec la méthode Paste

Je suis nouvelle ici, je n'ai pas l'habitude des forums et je n'y ai pas pensé :eek:
 

Pièces jointes

  • Annexe.xls
    23 KB · Affichages: 51
  • Book1.xlsm
    18.3 KB · Affichages: 57
  • Annexe.xls
    23 KB · Affichages: 61
  • Book1.xlsm
    18.3 KB · Affichages: 72
  • Annexe.xls
    23 KB · Affichages: 50
  • Book1.xlsm
    18.3 KB · Affichages: 63

Staple1600

XLDnaute Barbatruc
Re : VBA : problème avec la méthode Paste

Re

Tu as beau être nouvelle, tu es censée savoir lire* LOL.

Merci pour les fichiers et bienvenue sur le forum.
Je repasse dans ton fil après ma séance TV du dimanche soir.

*: je fais référence aux conseils avisés qui s'affichent quand on créé une discussion sur le forum.
 

Staple1600

XLDnaute Barbatruc
Re : VBA : problème avec la méthode Paste

Re

Fin de la séance TV, me revoilou... avec un biais ... en attendant mieux
Code:
Sub AjoutAnnexe()
Dim classeurSource As Workbook, classeurDestination As Workbook
Set classeurDestination = ThisWorkbook
Set classeurSource = Application.Workbooks.Open(Application.GetOpenFilename(), , False, , , , , , , True)
With classeurDestination
    .Activate
    Sheets.Add After:=Sheets(Sheets.Count)
    classeurSource.Sheets(1).UsedRange.Copy
     Sheets(Sheets.Count).Paste Link:=True
End With
ActiveWindow.DisplayZeros = False
classeurSource.Close False
End Sub
 

__xD

XLDnaute Nouveau
Re : VBA : problème avec la méthode Paste

Bonjour bonjour,

Je vois, astuce toute bête mais qui a son efficacité, merci beaucoup :)
Reste à voir si l'utilisateur aura besoin d'ajouter des fichiers contenant des zéros dans certaines cellules... Si oui, c'est reparti pour un tour :p
 

Discussions similaires

Réponses
3
Affichages
607
Réponses
2
Affichages
140

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry