gerer macro word depuis excel

bouchet2

XLDnaute Nouveau
Je cherche sans résultat de traduire en VBA
Coller une plage d'un tableau Excel en WORD texte et ensuite appliquer la fonction remplacer.

A la main ca marche
copier sur Excel le tableau
collage spécial dans Word choisir texte sans mise en forme
coller sur la page Word

appliquer plusieurs remplacer
comme
supprimer marque de paragraphe par « rien »
supprimer marque tabulation par « rien »

remplacer le sigle « / » que j'ai introduit a certains endroit de mon tableau par « a la ligne »
J’ai le texte que je désire et bien présenté.
J’ai beau essayé je suis bloqué sur l’écriture VBA de collage spécial sans mise en forme Ce lien n'existe plus
ci joint macroVBA

Merci d'avance
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Bonsoir à tous

bouchet2
Tu as ouvert trois discussions sur le forum dans lesquelles à aucun moment tu ne prends le temps de saluer les membres du forum.
C'est sans doute une des causes pour lesquelles tu n'as pas de réponse...
Prends le temps de lire la charte du forum, et appliques les conseils qui y sont distillés, tu verras ca ira tout de suite mieux ;)
 

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Re

Aie!
Tu n'as pas pensé à anonymiser ton fichier joint (comme le conseille la charte ...)
Remplaces les noms des personnes par des noms fictifs puis va sur ton premier message
et passes en mode Edition* pour remplacer ton fichier joint par un fichier sans données confidentielles.

*: Tu cliques sur Modifier le message puis sur Gérer les pièces jointes

EDITION: Il faut cocher la référence
( Dans Excel, faire ALT+F11 puis aller dans le menu Références -> comme ci-dessous )
referenceWord.png
PS: Selon ta version d'Excel, tu auras Microsoft Word XX.0 Object Library
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Re

La partie de ta macro concernant la copie dans Word ainsi modifiée fonctionne ici
(en ayant pris soin de cocher la référence idoine comme précisé dans mon précédent message)
Je te laisse tester chez toi en attendant que tu anonymises ton fichier!
Code:
Sub testOK()
'Déclarations Variables
'Pensez à activer la référence à Word -> Outils/Références
Dim oWdApp As Word.Application
Dim oWdDoc As Word.Document
'Lancer une instance Word
    Set oWdApp = CreateObject("Word.Application")
'Rendre Word visible
    oWdApp.Visible = True
'Ouvrir un nouveau document
    Set oWdDoc = oWdApp.Documents.Add
'Copier une plage depuis Excel
    Range("A4:G423").Copy
'Coller la plage dans Word
    oWdApp.Selection.PasteSpecial Link:=False, DataType:=wdPasteText, _
     Placement:=wdInLine, DisplayAsIcon:=False
Set oWdDoc = Nothing
Set oWdApp = Nothing
End Sub
 
Dernière édition:

bouchet2

XLDnaute Nouveau
Re : gerer macro word depuis excel

Monsieur,
Je vous remercie votre reponse qui m'a permis d'avancer jusqu'a la copie de mon tableau sur une feuille WORD, je cochais la mauvaise ligne sur reference , microsoft office au lieu de microsoft WORD.

En abusant de votre temps, pouvez vous regardez la macro proword celle ci en reprenant votre test enregistre une feuille vide .

En effet ma fille me demande un pogramme de tenue assemblée générale de copropriété en partant d'une base de donnée tableau EXCEL, et pour ce genre de programme il faut éliminer au maximum les opérations pour que l'utilisateur se concentre sur son assemblée. Sinon mon programme marche bien concernant les calculs de présence et vote selon la loi.
Merci d'avance
Jean BOUCHET
 

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Bonjour à tous

bouchet2:
Je n'ai pas gardé ton fichier joint puisqu'il n'était pas anonymisé.
Là c'est plus anonymisé, c'est atomisé qu'il est ;)
Repostes un fichier en mettant des données fictives (mais en gardant la structure et le code VBA de ton premier fichier.
Exemple:
NOM1 Prenom1
NOM2 Prenom2
etc...
(En plus en faisant une recopie vers le bas, Excel te facilitera la tâche ;) )

J'attends donc ton nouveau fichier joint pour aller plus loin.
 

bouchet2

XLDnaute Nouveau
Re : gerer macro word depuis excel

Merci de me repondre
En effet j'habite à ST MARTIN CARAIBES et je ne trouve personne pour me donner quelques cours.

J'ai refait le fichier en changeant les noms.ci joint

J'aurais besoin certainement de crer dans mon tableau des signes entre certaines phrases pour eviter ques les mots ce touchent.

A bientot
Jean BOUCHET
 

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Bonsoir à tous

bouchet2:
Avec les modifs ci-dessus, proword semble fonctionner, non?
Code:
Sub proWord_II()
'Déclarations Variables
Dim fd As Worksheet, Limite As Long, Nomdufichier As String
Dim oWdApp As Word.Application 'Pensez à activer la référence à Word -> Outils/Références
Dim oWdDoc As Word.Document


Set fd = Worksheets("feuil1")
'La zone excel débute en A1 e termine en Hi, i étant variable suivant le nombre de ligne du devis
fd.Select
Limite = fd.Range("A65535").End(xlUp).Row 'détermine la dernière ligne de mon tableau
Nomdufichier = InputBox("Nom du fichier", "feuil1")
'Lancer une instance Word
Set oWdApp = CreateObject("Word.Application")
'Rendre Word visible
oWdApp.Visible = True
'Ouvrir un nouveau document
Set oWdDoc = oWdApp.Documents.Add
Sheets("feuil1").Range("B3:H" & Limite + 43).Copy 'selection du tableau
oWdApp.Documents.Add
oWdApp.Selection.PasteSpecial Link:=False, DataType:=wdPasteText, _
Placement:=wdInLine, DisplayAsIcon:=False
'macroword remplacer
oWdApp.Selection.WholeStory
    oWdApp.Selection.Find.ClearFormatting
    oWdApp.Selection.Find.Replacement.ClearFormatting
    With oWdApp.Selection.Find
        .Text = "/"
        .Replacement.Text = "^l"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    oWdApp.Selection.Find.Execute Replace:=wdReplaceAll
    oWdApp.Selection.Find.ClearFormatting
    oWdApp.Selection.Find.Replacement.ClearFormatting
    With oWdApp.Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    oWdApp.Selection.Find.Execute Replace:=wdReplaceAll
    oWdApp.Selection.Find.ClearFormatting
    oWdApp.Selection.Find.Replacement.ClearFormatting
    With oWdApp.Selection.Find
        .Text = "^t"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
oWdApp.Selection.Find.Execute Replace:=wdReplaceAll
oWdApp.ActiveDocument.SaveAs ThisWorkbook.Path & "/" & Nomdufichier & ".doc"
oWdApp.Quit
Set oWdDoc = Nothing: Set oWdApp = Nothing
End Sub
 

bouchet2

XLDnaute Nouveau
Re : gerer macro word depuis excel

Merci beaucoup ca marche.

Par contre pour eviter que des textes ce touchent j'ai introduit le sigle § a certains endroits du tableau et remplacer par rien, ce qui fait un texte impeccable.
je vais essayer de faire un with en plus comme:
With oWdApp.Selection.Find
.Text = "§"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
et supprimer la sortie de word pour que les textes restent lisible
J'aurais atteint l'objectif

Merci beaucoup

Jean BOUCHET
 

bouchet2

XLDnaute Nouveau
Re : gerer macro word depuis excel

Monsieur

Bonjour

j'ai mis en application votre code et c'est impeccable.

Toutefois ces modifications m'ont crées un probléme, si vous pouvez m'aider, c'est primordial a mon programme.

En copropriété lorqu'un vote se fait a la majorité de l'article 25, si celle ci n'est pas atteinte on peut revoter immédiatement à l'article 24 selon l'article 25-1 de la loi.

C'est ce que faisait le programme avant, l'introduction de la copie vers word direct,il copiait les votes , mais au lieu de revenir sur la feuille" presentation" il revenait a la feuille "vote" en conservant les votes anciens, il changait la majotité et on revotait et le processus de copie des noms et tranfert sur Word se refaisait.

Hors ca ne marche plus, je cherche a ce que le retour sur la feuille presention ne se fasse pas en cas application article 25-1 te conserve les votes precédents.

Impossible de trouver l'erreur.

Ci joint la macro , en jaune l'endroit ligiteux

Merci d'avance

Jean BOUCHET
 

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Bonsoir à tous

bouchet2
Ta macro fait 25 pages !!
Tu aurais tout intérêt à l'alléger en procédant ainsi:
Ce qui suit peut s'écrire en supprimant tout les Select
Extrait de ton code VBA d'origine
Code:
Sheets("COPIEVOTE").Select
Range("F16:M216").Select
Selection.Clear
Sheets("VOTE ").Select
Range("D16:D216").Select
Selection.Clear
Range("F16:M216").Select
Selection.Clear
Sheets("presentation").Select
Range("h17").Select
Selection.ClearContents
Range("J17:O17").Select
Selection.ClearContents
[SIZE=2]
[/SIZE]
Code nettoyé
Code:
Sheets("COPIEVOTE").Range("F16:M216").Clear
Sheets("VOTE ").Range("D16:D216,F16:M216").Clear
Sheets("presentation")Range("H17,J17:O17").ClearContents

Je te laisse faire ce nettoyage de ton code (en supprimant partout où tu le peux les Select et Selection
 

bouchet2

XLDnaute Nouveau
Re : gerer macro word depuis excel

BONJOUR

Merci de me suivre dans mes recherches.

Déja j'ai trouvé mon erreur concernant la macro SUB VALIDATIONNOMS()
En recopiant ta macro SUB PROWORD j'avais SUPPRIMER UNE LIGNE.
Mon programme marche super bien, en dehors des deux formulaires que je dois créer concernant l'ematrgement et les votes avec liste deroulantes et boutons d'option. On verra plus tard.
il me reste un petit souci, en effet dans mon tableau feuille emargement , je gere les presents =P
les absents = A, les representes =R
Quand un copropriétaire arrive en cours d'assemblée je l'inscris en arrivée present =AP, ou arrivée representes =AR
Ce qui me permet de modifier les resultats et d'editer leur arrivée sur la proces verbal de l'assemblée.
Je veux ensuite les changer en "P", en effet si d'autres copros arrivent ,aprés il serait repris a nouveau dans mon tri.
Ci joint
la macro réaliser qui marche, mais je perd dans ma feuille emargement colonne "J" ma mise en forme conditionnelle.
J'ai essayé avec la formule Avtivecells. Formular1C1, impossible.

Merci à l'avance

Jean BOUCHET
Sub remplacementAPAR()
ActiveSheet.Range("$C$15:$J$35").AutoFilter Field:=8, Criteria1:="=AP", _
Operator:=xlOr, Criteria2:="=AR"

'M2 est une cellule ou j'ai inscrit "P"
Range("M2").Select
Selection.Copy
'cherche la dernière cell vide de la colonne:

RowFin = Range("j216").End(xlUp).Row + 1

'sélectionne la plage voulue:

Range(Range("J16:J216"), Range("j" & RowFin)).Select

ActiveSheet.Paste

ActiveSheet.Range("$C$15:$J$35").AutoFilter Field:=8

Range("A1").Select
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : gerer macro word depuis excel

Re

bouchet2
Bannissons les Select ! (voir mon précédent message :rolleyes: )
Code:
Sub remplacementAPAR_bis()
Dim c As Range
    For Each c In Range(Cells(16, "J"), Cells(Rows.Count, "j").End(xlUp))
    If c.Text Like "AP" Or c.Text Like "AR" Then
    c.Value = "P"
    End If
    Next c
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 898
Membres
103 022
dernier inscrit
Ouékino