Difficile pour mi ..feuille active et copie

  • Initiateur de la discussion Initiateur de la discussion EDfun
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

EDfun

Guest
🙂😉Bonjour Vous tous,

Votre aide serait plus que bienvenue.
J'ai un problème à résoudre qui je pense sera moins complexe pour des passionnés comme vous :
Ci-joint une matrice qui copie une plage de cellule d'une feuill x dans une feuille Word défini.
Mais voila, il y a 2 points que je n'arrive pas à résoudre. A savoir que j'ai 266 feuille qui ont chaqu'une les plages identiques pour y écrire un texte.

1) comment modifier cette matrice pour que la 2ème copie n'écrasent pas la 1ere. Et qui permettrait de copier plusieurs textes de différentes feuilles sur une même page word les une aprés les autre.

2) comment modifier le code de manière a ce que la copie se face depuis la feuille ouverte et non pas de la feuille x.Car sinon il faudrait faire une macro pour chaque feuille(266)


Dim docWord As Word.Document
Dim appWord As Word.Application
Set appWord = New Word.Application
Application.DisplayAlerts = True
appWord.ShowMe
appWord.Visible = False

'Ouvre le document Word

Set docWord = appWord.Documents.Open("c:\Documents and Settings\toto\Bureau\Memos.doc", ReadOnly:=False)

' Copie les données Excel de la feuille1. (Feuille activ serait mieux)😀

ThisWorkbook.Worksheets("Feuil1😕").Range("C31:I36").Copy

' Colle les données dans Word, (Mais écrase le précédant)😱

docWord.Range.PasteSpecial😡
Application.CutCopyMode = False
docWord.Application.ActiveDocument.Save
appWord.Application.Quit

Je remercie par avance la bonne âme
En effet, je n'arrive pas à le faire sans que les textes s'écrasent les uns les autres plutôt que de se succéder.
 
Re : Difficile pour mi ..feuille active et copie

Bonjour EdFun 🙂,
Ça n'a pas été simple, mais bon 😛...
Code:
Sub test()
Dim Feuille As Worksheet
Dim docWord As Word.Document
Dim appWord As Word.Application
Set appWord = New Word.Application
Application.DisplayAlerts = True
appWord.ShowMe
appWord.Visible = False
'Ouvre le document Word
Set docWord = appWord.Documents.Open(ThisWorkbook.Path & "\Memos.doc", ReadOnly:=False)
' Copie les données Excel de toute les feuilles
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Range("C31:I36").Copy
' Colle les données dans Word
appWord.Selection.PasteExcelTable False, False, False
appWord.Selection.TypeParagraph
Application.CutCopyMode = False
Next
docWord.Application.ActiveDocument.Save
appWord.Application.Quit
End Sub
Bon WE 😎
 
Re : Difficile pour mi ..feuille active et copie

Bonjour JNP,

Tout d'abord...Grand merci de m'avoir accordé de ton temps et de partager tes connaissances.
Malheureusement je dois aller au boulot,(1 Dimanche et oui)
Mais promis, je teste dès que possible, et je t'en fais pars.

A++ JNP
 
Re : Difficile pour mi ..feuille active et copie

bonsoir JNP,🙂

Ta macro est super, elle marche au top😀.

Mais petit Hic🙁; elle copie la plage désirée de toutes les feuilles.
Il faudrait qu'elle ne copie que la plage de la feuille qui est ouverte, ou de
celle d'ou je lance la copie.

Dans tous les cas ton idée de la sélection de toutes les feuilles m'a ouvert une opportunité pour ajouter une option de +😉. c'est bon pour le moral.

Merci de ta patience
a++ JNP....
 
Re : Difficile pour mi ..feuille active et copie

Re 🙂,
2) comment modifier le code de manière a ce que la copie se face depuis la feuille ouverte et non pas de la feuille x.Car sinon il faudrait faire une macro pour chaque feuille(266)
C'est bien ce qui était demandé 😀...
Code:
' Copie les données Excel de la feuille active
ActiveSheet.Range("C31:I36").Copy
' Colle les données dans Word
appWord.Selection.PasteExcelTable False, False, False
appWord.Selection.TypeParagraph
Application.CutCopyMode = False
devrait fonctionner.
Bonne soirée 😎
 
Re : Difficile pour mi ..feuille active et copie

Bonjour JNP,

C'est exactement ce qui correspond à ma demande🙂.Franchement BRAVO .
Mais durant les tests, il y a un problème auquel je n'avais pas pensé🙁.
Au bout de 4 copies, ça commence à ramer, et à partir de la 6ème ou 7ème copie, le fichier devient si lourd que la feuille word devient presque ingérable.
Penses-tu qu'il a un moyen d'alléger la copie.
Par ex: Ne copier juste que le texte situé dans la plage de cellule, et non pas toute la plage.
Penses-tu que c'est réalisable.

Désolé d'abuser 🙄
Bonne jounée à toi. A++
 
Re : Difficile pour mi ..feuille active et copie

Re 🙂,
Mais durant les tests, il y a un problème auquel je n'avais pas pensé🙁.
Au bout de 4 copies, ça commence à ramer, et à partir de la 6ème ou 7ème copie, le fichier devient si lourd que la feuille word devient presque ingérable.
Le problème est de savoir pourquoi tu veux copier tes tableaux sous Word 😕...
Word est fait pour le texte, comme son nom l'indique, Excel pour les tableaux 😀...
Sans comprendre le pourquoi, difficile de trouver le comment 😛 !
A + 😎
 
Re : Difficile pour mi ..feuille active et copie

Bonjour JNP,😉

"Word est fait pour le texte, comme son nom l'indique, Excel pour les tableaux ..."

🙂Tu as raison, mais saches que de word je sais juste faire un simple courrier🙁.
Pour excel, j'ai eu une brève formation découverte il y a deux mois, la découverte des possibilités d'excel m'a emballer😛. Et depuis, grâce à ce forum et des personnes qui ont comme règle, le partage du savoir. Aujourd'hui J'en suis à essayer de décoder "de comprendre" les macros.

"Le problème est de savoir pourquoi tu veux copier tes tableaux sous Word ..."

Bien, pour facilité le tâche de ma femme à son travail, j'ai crée un classeur.
Depuis une feuille principale elle accède à divers éléments (Listes;feuilles individuelles; Tableau etc....) par des liens hypertexte.

Le but principal est de noter dans les feuille individuelles (1 par usager "266")
un historique mis régulièrement à jour en fonction des demandes de ces usagers.

IL arrive que certainnes notes doivent parvenir aux divers services intervenants en fin de chaque semaine.

Afin de rien oublier car souvent importantes, il est fait un copier coller manuel😡 d'une partie du texte ( information qui doit parvenir au service concerner le vendredi suivant) sur une page word. Cette page word sert de rappel.

Durant la semaine il est copier de 1 à xx texte mémoire, et ainsi le vendredi il ne reste qu'a imprimer cette page à l'aide d'un bouton lié à une macro qui commande l'impression.Ainsi grace à cette page elle ne peut rien oublier l'hors de la réunion.
Voila, j'éspère être compréhensible😱 . Si le copier coller pouvait se faire par une macro liée a un bouton 😀😀😀 sinon🙁🙁🙁

J'éspère A++ JNP......
 
Re : Difficile pour mi ..feuille active et copie

Re 🙂,
Si tu copie des hyperliens, c'est pas étonnant que ça rame...
Le plus simple, à mon avis, serait de faire un bête TXT à la sortie d'Excel, avec juste le contenu des cellules, séparé par une tab à l'horizontal, retour chariot à la verticale...
Ça prendrait quelques minutes, et le fichier TXT des 266 tableaux serait fait 😛.
A + 😎
 
Re : Difficile pour mi ..feuille active et copie

Re Bsr,

"Si tu copie des hyperliens, c'est pas étonnant que ça rame..."

Non il n'y a pas d'hyperliens sur les plages concernées.

""un bête TXT à la sortie d'Excel, avec juste le contenu des cellules, séparé par une tab à l'horizontal, retour chariot à la verticale...""🙄😕🙁
Excuse, mais j'ai du mal à suivre.En résumer écrire le texte en direct sur un fichier TXT😕.

Par contre j'ai trouvé un code qui marche, mais je n'arrive pas à l'adapter à ma macro. Le petit hic de plus🙁, il ne colle bien que le texte, mais le cursseur se place aprés les lignes vides de la plage.


Sub Copie()

Range( "x:x" ).Copy
Set WW = CreateObject ( "word.application" )
WW.Visible = True
WW.Documents.Add
WW.Selection.PasteSpecial Link:= False , DataType:=wdPasteText, Placement:= _
wdInLine, DisplayAsIcon:= False

End Sub


😱 A+ 😎MERCI
 
Re : Difficile pour mi ..feuille active et copie

Re 🙂,
""un bête TXT à la sortie d'Excel, avec juste le contenu des cellules, séparé par une tab à l'horizontal, retour chariot à la verticale...""🙄😕🙁
Excuse, mais j'ai du mal à suivre.En résumer écrire le texte en direct sur un fichier TXT😕.
En gros, obtenir
Code:
C31    D31    E31    F31    G31    H31    I31
C32    D32    E32    F32    G32    H32    I32
Etc.
avec la valeur à la place de l'addresse de la cellule et une tab à la place des espaces 😉.
Je pense que ce sera plus simple et plus rapide que de s'acharner sur Word 🙄...
A + 😎
 
Re : Difficile pour mi ..feuille active et copie

Re JNP😉

Je comprend mieux, et pourquoi pas!
Pour l'instant je n'ai pas trop le temps de tester ta solution.
je la test dés que je peux.

« Donnez-moi un point d'appui et je soulèverai le monde » Archimède

Grace à ton appui je soulève le monde ....Oui, mais..de mon petit cerveau.😀😉

encore merci 😎 A+
 
Re : Difficile pour mi ..feuille active et copie

Re 🙂,
Je comprend mieux, et pourquoi pas!
Pour l'instant je n'ai pas trop le temps de tester ta solution.
je la test dés que je peux.
Teste alors ce code, tu verras que la vitesse n'a rien à voir 😛...
Code:
Sub test()
Dim Feuille As Worksheet, I As Integer, J As Integer, Texte As String
Open ThisWorkbook.Path & "\Memos.txt" For Output As #1    ' Ouvre le fichier en écriture.
' Copie les données Excel de toute les feuilles.
For Each Feuille In ThisWorkbook.Worksheets
Print #1, Feuille.Name    ' Insère le nom de l'onglet avant chaque feuille. Facultatif.
For J = 31 To 36
For I = 3 To 9
Texte = Texte & Feuille.Cells(J, I).Value & vbTab
Next I
Print #1, Texte  ' Écrit le texte dans le fichier.
Texte = "" ' Réinitialise Texte.
Next J
Print #1,    ' Insère une ligne vierge dans le fichier entre chaque feuille. Facultatif.
Next
Close #1    ' Ferme le fichier.
End Sub
Bonne journée 😎
 
Re : Difficile pour mi ..feuille active et copie

Bonsoir JNP😉

Je te remercie d'avoir compilé pour moi🙂, car je ne l'avais pas compris comme ça🙁. Tu me fais découvrir encore une nouvelle chose😛, t'es vraiment cool.
c'est encore une option qui va me servir pour lister les usagers avec leurs emplacements😀.C'est super
Aprés avoir testé, celà ne correspond pas à mon probléme...🙁

Voici la macro que j'ai fini par compiler avec ton aide, et qui peut intérresser quelqu'un🙄.
Elle permet de copier que le texte d'une plage de cellule (x:x) de la feulle active, et de coller ce texte sur une page word désignée (toto.doc).Et celle-ci reste fermée.
Et si cette action se multiplie, les textes se collent les uns à la suite des précédents (cela peut être intéressant si mettez des notes diversses dans la même plage de cellule, mais sur différentes feuilles).

Seul hic : elle ne colle que le texte, ce qui allège trés trés bcp ,Trés bien. Mais Hélas elle colle aussi les lignes vides de la plage, donc sur la page word vous aurez les 2, 5 ou 8 lignes d'espace qui seront égalles aux lignes vides de la plage.
(Si toutes les lignes de la plage sont écrites c-est parfait).

Désolé, mais j'ai essayé plein plein de truc, même acheté un livre vba, Rien à faire pour suprimer ces 😱lignes vides😡😡. Lignes vides de la plage de cellule pas de la feuille.

Sub Copie_Texte_de_plage_sur_word()

Dim Feuille As Worksheet
Dim docWord As Word.Document
Dim appWord As Word.Application
Set appWord = New Word.Application
Application.DisplayAlerts = True
appWord.ShowMe
appWord.Visible = False
'Ouvre le document Word : désiré
Set docWord = appWord.Documents.Open(ThisWorkbook.Path & "\Toto.doc", ReadOnly:=False)

' Copie les données Excel de la feuille active
ActiveSheet.Range("Cellule x:Cellule y").Copy

' Colle au format spécial (sans la mise en forme; que le texte)
appWord.Selection.PasteSpecial Link:=False, DataType:=wdPasteText

Application.CutCopyMode = False
docWord.Application.ActiveDocument.Save
appWord.Application.Quit

End Sub

Et + imprimer une page word désignée (sans que celle-ci s'ouvre) depuis un classeur Excel..


Sub Impression_Word_depuis_Exel()

'necesite d'activer la reference Microsoft Word xx.x Object Library
Dim appWrd As Word.Application
Dim docWord As Word.Document
Dim Fichier As String
Fichier = "C:\......\...\Toto.doc"

Set appWrd = CreateObject("Word.Application")
appWrd.Visible = False
'=Faux,pour que word reste masqué pendant l'operation
Set docWord = appWrd.Documents.Open(Fichier)

docWord.PrintOut 'impression

docWord.Close 'fermer le document Word
appWrd.Quit 'fermer la seesionWord

End Sub
FIN😛😀

J'Espère que celà servira .......

Et Bcp Merci à toi JNP
Tu m'as appris pleins de trucs. Si tu passes à Toulouse, je t'offre le pot avec gd plaisir😛 A++🙂
 
Re : Difficile pour mi ..feuille active et copie

Re 🙂,
Je pense qu'il faudrait que tu changes
Code:
' Copie les données Excel de la feuille active
ActiveSheet.Range("Cellule x:Cellule y").Copy
par un Union si ligne pas vide, avant le Copy...
A + 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
752
B
Réponses
0
Affichages
1 K
BaptisteLH
B
B
  • Question Question
Réponses
0
Affichages
778
BaptisteLH
B
A
Réponses
30
Affichages
6 K
Réponses
6
Affichages
3 K
Guicheux
G
R
Réponses
0
Affichages
755
rogber
R
C
Réponses
0
Affichages
831
claire_la_geek
C
T
Réponses
1
Affichages
953
terminus
T
Retour