[RESOLU] Remplacer date par une autre en fonction d'une liste excel

jabenj

XLDnaute Junior
Bonjour à tous,

Après maintes recherches sur le web, pas moyen de trouver ce que je pense être quelque chose de simple...

En effet, (voir image jointe*, car fichiers nominatifs de 1400 pages) je dispose :

- d'un fichier excel contenant des numéros de dossiers (colonne D) et des dates (toujours les mêmes) (colonne F)
- d'un fichier word (comme dit plus haut de 1400 pages) qui ne contient pas forcément tout les numéros de dossier.

a) Si je trouve le numéro de dossier dans le document word, je dois changer une date.

b) Si je ne trouve pas le numéro de dossier, je dois indiquer au listing excel (colonne E) que je ne l'ai pas trouvé (pour retraitement).

Je n'ai hélas pas que ce fichier... j'ai déjà fait beaucoup à la main, mais les plus gros arrivent, et les délais se serrent...!

Auriez-vous l'aimabilité et l'intelligence de m'aider à créer peut-être une macro ( qui je crois être l'ultime solution..)

Trés cordialement,
Benjamin

*PS : désolé pour les "caches"....!! mais la CNIL est partout ( et heureusement!)!
 

Pièces jointes

  • excel dwld.jpg
    excel dwld.jpg
    78.3 KB · Affichages: 66
Dernière édition:

jabenj

XLDnaute Junior
Re : Remplacer date par une autre en fonction d'une liste excel

Bonjour,

ok, je joins les PJ, mais veuillez excuser la mise en page, car j'ai dû anonymiser au maximum... Donc merci de ne pas en tenir compte. j'ai donc joins 3 courriers (plutot que les 1400)
Si il devait y avoir un calcul de nombre de ligne je corrigerai la vba .. pareil pour les colonnes...

Néanmoins, sachez que la colonne C (contenant les dates) n'est pas obligatoire, j'imagine un peu un code qui dirait que la phrase : "tel qu’il doit être mis en œuvre à compter du 01/01/2014." se transforme en "tel qu’il doit être mis en œuvre à compter du 01/04/2014." (un peu à la manière du "remplacer" dans word) et si la vba ne trouve pas le numéro, elle cochera la colonne B...

Facile pour vous, non ?

Pour info, c'est une augmentation de tarif certes, mais qui est indépendante de notre volonté, sachez le bien, c'est une augmentation naturelle annuelle...

En tout cas merci de vos réponses !!
(Et bonjour Bebere, le sauveur perpétuel !!)
 

Pièces jointes

  • xlsx dwld.xlsx
    328 KB · Affichages: 55
  • docx dwld.docx
    22.5 KB · Affichages: 53

st007

XLDnaute Barbatruc
Re : Remplacer date par une autre en fonction d'une liste excel

Ce code a pour effet de chercher "xxx" dans le doc word et le remplacer par la cellule (B2) sur un document word déjà ouvert


Code:
Sub CopRemp()
Dim Mot As String, Doc As String, AppWord As Object, DocWord As Object
Mot = Range("B2").Value
On Error GoTo Err1
Set AppWord = GetObject(, "Word.Application")
For each DocWord in AppWord.Documents
DocWord.Activate
With AppWord.Selection
.WholeStory
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
With .Find
.Text = "xxx" ' __________________________c'est ici que tu changes
.Replacement.Text = Mot
.Forward = True
.Wrap = 2
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
AppWord.DisplayAlerts = 0
.Find.Execute Replace:=2
AppWord.DisplayAlerts = -1
End With
Next
On Error GoTo 0
Exit Sub
Err1:
MsgBox "Erreur"
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    15.3 KB · Affichages: 40
  • Classeur1.xlsm
    15.3 KB · Affichages: 66
  • Classeur1.xlsm
    15.3 KB · Affichages: 58
Dernière édition:

jabenj

XLDnaute Junior
Re : Remplacer date par une autre en fonction d'une liste excel

Bonjour st007,

Merci de te démener malgré la aussi des tarifs !!

Cependant, le code ne fonctionne pas : il sélectionne l’intégralité du document word, mais n'y change rien.. j'ai pourtant adapté le code en fonction de mes besoins..

Merci beaucoup !!
 

jabenj

XLDnaute Junior
Re : Remplacer date par une autre en fonction d'une liste excel

Mea culpa, je n’avais pas vu ton fichier !

En effet, ça fonctionne pour le remplacement.

Mais comment lui dire de ne remplacer que les n° de dossiers impactés par le changement ? (et é&galement d'inscrire dans le fichier xlsx les numéros qu'il n'a pas trouvé ?

Je me rends compte que j'ai dû mal m'exprimer :
- Dans le fichiers word, les numéros de dossiers du fichiers excel n'y sont pas forcément (ce qui n'a pas vocation à être affiché),cela génére juste le changment de date.
- Dans le fichier excel, pareil, les numéros ne se trouvent pas forcément dans le document word, néanmoins, ces numéros doivent être "remarqués".

Vraiment désolé pour ce manque d'information !

Merci encore !!!
 

Nairolf

XLDnaute Accro
Re : Remplacer date par une autre en fonction d'une liste excel

Salut tout le monde,

En regardant de plus près ton fichier word et en imaginant ton fichier Excel complet, ça me fait de plus en plus penser à un traitement réalisable en publipostage.

Donc, je me pose quelques questions:
- Quelles sont les valeurs qui varient d'un dossier à l'autre?
- Comment ont été créées les 1400 pages de ton fichier?
- Sera-tu amené à refaire une manip identique ensuite sur ces données avec d'autres valeurs?
- As-tu ces données présentent dans le document word aussi présentent dans un fichier excel?

Je te demande tout ça car il me semble difficilement réalisable de modifier une date à la condition qu'un numéro situé au-dessus soit égal à une certaine valeur (à moins de connaître la position exacte de l'un par rapport à l'autre).
Par contre le publipostage (à noter que ça fait un bail que je n'en ai pas fait) permet de le faire simplement avec une base de données issue d'un fichier excel.
 

Bebere

XLDnaute Barbatruc
Re : Remplacer date par une autre en fonction d'une liste excel

bonsoir

trouvé ce code et adapté en partie

Code:
Sub recherchedansword()
    Dim Cible As String
    Dim AppWord As Word.Application
    Dim DocWord As Word.Document
    Dim CollWord As Word.Words
    Dim x As Long, a As String, b As String

    Cible = "C:\Users\René\Downloads\docx dwld.docx"

    'Ouvre une instance Word
    Set AppWord = New Word.Application
    'Indiquez False pour garder l'application masquée
    AppWord.Visible = True

    'Ouvre le document Word
    Set DocWord = AppWord.Documents.Open(Cible)
    Set CollWord = DocWord.Content.Words

    'Boucle sur les mots du document
    For x = 1 To CollWord.Count - 2
        If InStr(1, CollWord(x) & CollWord(x + 1), "Dossier") > 0 Then
            a = CollWord(x + 4)
        End If

        If InStr(1, CollWord(x) & CollWord(x + 1), ",") > 0 Then
            b = CollWord(x + 3) & CollWord(x + 4) & CollWord(x + 5) & CollWord(x + 6) & CollWord(x + 7)
        End If
'résultat dans feuille
        If a <> "" And b <> "" Then
            l = l + 1
            Range("E" & l) = a: Range("F" & l) = b
            Exit For
        End If
    Next

    DocWord.Close True
    Set DocWord = Nothing
    AppWord.Quit
    Set AppWord = Nothing

End Sub

l'idée inscrire en E et F ce qui est trouvé
ensuite comparer
 

Staple1600

XLDnaute Barbatruc
Re : Remplacer date par une autre en fonction d'une liste excel

Bonsoir à tous


[avis personnel]
Ce genre de problème se traite très bien par publipostage.
(il suffit d'actualiser les tarifs dans le fichier Excel et de refaire une fusion)

Le tout sans macro.
[/avis personnel]
 

jabenj

XLDnaute Junior
Re : Remplacer date par une autre en fonction d'une liste excel

Bonjour !!

Désolé pour le délai de ma joie en réponse, mais d’autres projets ont vite pris le pas !
Néanmoins, c'est parfait Bébére, j'avais justement bossé sur un code avec un collègue et c'est exactement (ou presque) le même code que toi ! je retiens donc le tiens qui m'a l'air bcp plus simple parce que les sessions ne sont pas finies !!!!

Toujours est-il que je vous remercie (encore !!) infiniment pour votre talent et votre aide toujours rapide !!!
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman