Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment rompre des liaisons éronées grace à un code Visual Basic ?

6 réponses
Avatar
Itanium
Bonjour, j'ai plus de 3000 fichiers Word 2000 avec des liaisons éronées et je
souhaiterais supprimer ces liaisons (et non les modifier) grace à un
programme sous Visual Basic ou autre. Pouvez-vous me donner une commande me
permétant de rompre ces liaisons?
Merci

6 réponses

Avatar
Circé
Bonjour,

Je ne pense pas que ce soit possible sans ouvrir les fichiers...
Tu peux utiliser la très magique batchmacro d'anacoluthe que tu
trouveras sur mon site :
http://faqword.free.fr/search.php?lng=fr

Je te conseille cependant de ne pas traiter tes 3000 fichiers à la
fois..

(euh... tu t'appelles pas JièL par hasard ?... ;))) Private Joke)

Circé


Itanium a utilisé son clavier pour écrire :
Bonjour, j'ai plus de 3000 fichiers Word 2000 avec des liaisons éronées et je
souhaiterais supprimer ces liaisons (et non les modifier) grace à un
programme sous Visual Basic ou autre. Pouvez-vous me donner une commande me
permétant de rompre ces liaisons?
Merci


Avatar
JièL
Bonjoir(c) Circé

Je te conseille cependant de ne pas traiter tes 3000 fichiers à la
fois..

(euh... tu t'appelles pas JièL par hasard ?... ;))) Private Joke)


Nnnnnnnaaaaaaannnn c'est une pâle imitation, moi les chiffres sont bien
plus """réels""" ;-))))))))))

JièL de Marseille... cong !

Avatar
Brel Patrice
Bonsoir,

Voici une petite macro qui devrait répondre à votre problème à copier dans
un module

'------------------------------------------

Sub suppression_des_liens()
'LIMITE: seuls les fichiers Word à gérer doivent se trouver dans le répertoire

Dim fs, path_fichier, fichier_doc, fc
Dim path_sauvegarde

'---- définition du répertoire contenant les fichiers
Set fs = CreateObject("Scripting.FileSystemObject")
folderspec = InputBox("entrer le chemin du répertoire sans à la fin",
"PATH", "c:")
Set path_fichier = fs.GetFolder(folderspec)
Set fc = path_fichier.Files
On Error GoTo suite
ActiveDocument.Close
suite:
'BOUCLE SUR TOUS LES FICHIERS SE TROUVANT DANS LE REPERTOIRE
For Each fichier_doc In fc
aa = Chr(34) & fichier_doc & Chr(34)

Documents.Open FileName:ª
'Début du document
Selection.HomeKey Unit:=wdStory
' Affichage des codes de champ
ActiveWindow.View.ShowFieldCodes = True
' Recherche des champs
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text

'BOUCLE SUR TOUTES LES OCCURENCES DU CHAMP D'IMAGE DU DOCUMENT EN COURS
While Selection.Find.Found
' identification en tant que champ d'image en liaison
If InStr(1, tekst, "includepicture", 1) Then
'couper et coller en tant qu'image Bitmap sans liaison
Selection.Cut
Selection.PasteSpecial Link:úlse, DataType:= _
wdPasteDeviceIndependentBitmap, Placement:=wdInLine, DisplayAsIcon _
:úlse
End If
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text
Wend
ActiveDocument.Save
ActiveDocument.Close
Next
End Sub

--
Salutations

Brel Patrice



Bonjour, j'ai plus de 3000 fichiers Word 2000 avec des liaisons éronées et je
souhaiterais supprimer ces liaisons (et non les modifier) grace à un
programme sous Visual Basic ou autre. Pouvez-vous me donner une commande me
permétant de rompre ces liaisons?
Merci


Avatar
Itanium
Bonjour.

je vous remercie pour cette petite macro qui me parait tres utile.
Néanmoins j'ai un petit problème dans ce code que je n'arrive pas à résoudre
au niveau de la ligne :

Documents.Open FileName:ª

qui produit une erreur d'exécution '424': un objet est requis.
La variable aa contient: "G:MONDOSSIERDOSSIER1131.doc"

Merci pour votre aide.


Bonsoir,

Voici une petite macro qui devrait répondre à votre problème à copier dans
un module

'------------------------------------------

Sub suppression_des_liens()
'LIMITE: seuls les fichiers Word à gérer doivent se trouver dans le répertoire

Dim fs, path_fichier, fichier_doc, fc
Dim path_sauvegarde

'---- définition du répertoire contenant les fichiers
Set fs = CreateObject("Scripting.FileSystemObject")
folderspec = InputBox("entrer le chemin du répertoire sans à la fin",
"PATH", "c:")
Set path_fichier = fs.GetFolder(folderspec)
Set fc = path_fichier.Files
On Error GoTo suite
ActiveDocument.Close
suite:
'BOUCLE SUR TOUS LES FICHIERS SE TROUVANT DANS LE REPERTOIRE
For Each fichier_doc In fc
aa = Chr(34) & fichier_doc & Chr(34)

Documents.Open FileName:ª
'Début du document
Selection.HomeKey Unit:=wdStory
' Affichage des codes de champ
ActiveWindow.View.ShowFieldCodes = True
' Recherche des champs
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text

'BOUCLE SUR TOUTES LES OCCURENCES DU CHAMP D'IMAGE DU DOCUMENT EN COURS
While Selection.Find.Found
' identification en tant que champ d'image en liaison
If InStr(1, tekst, "includepicture", 1) Then
'couper et coller en tant qu'image Bitmap sans liaison
Selection.Cut
Selection.PasteSpecial Link:úlse, DataType:= _
wdPasteDeviceIndependentBitmap, Placement:=wdInLine, DisplayAsIcon _
:úlse
End If
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text
Wend
ActiveDocument.Save
ActiveDocument.Close
Next
End Sub

--
Salutations

Brel Patrice



Bonjour, j'ai plus de 3000 fichiers Word 2000 avec des liaisons éronées et je
souhaiterais supprimer ces liaisons (et non les modifier) grace à un
programme sous Visual Basic ou autre. Pouvez-vous me donner une commande me
permétant de rompre ces liaisons?
Merci




Avatar
Brel Patrice
Bonjour,

Je contrôlerai ce soir. Néanmoins il se pourrait que VBA demande la
déclaration de variable. Ajoutez donc simplement Dim aa pour commencer.

Merci
--
Brel Patrice



Bonjour.

je vous remercie pour cette petite macro qui me parait tres utile.
Néanmoins j'ai un petit problème dans ce code que je n'arrive pas à résoudre
au niveau de la ligne :

Documents.Open FileName:ª

qui produit une erreur d'exécution '424': un objet est requis.
La variable aa contient: "G:MONDOSSIERDOSSIER1131.doc"

Merci pour votre aide.


Bonsoir,

Voici une petite macro qui devrait répondre à votre problème à copier dans
un module

'------------------------------------------

Sub suppression_des_liens()
'LIMITE: seuls les fichiers Word à gérer doivent se trouver dans le répertoire

Dim fs, path_fichier, fichier_doc, fc
Dim path_sauvegarde

'---- définition du répertoire contenant les fichiers
Set fs = CreateObject("Scripting.FileSystemObject")
folderspec = InputBox("entrer le chemin du répertoire sans à la fin",
"PATH", "c:")
Set path_fichier = fs.GetFolder(folderspec)
Set fc = path_fichier.Files
On Error GoTo suite
ActiveDocument.Close
suite:
'BOUCLE SUR TOUS LES FICHIERS SE TROUVANT DANS LE REPERTOIRE
For Each fichier_doc In fc
aa = Chr(34) & fichier_doc & Chr(34)

Documents.Open FileName:ª
'Début du document
Selection.HomeKey Unit:=wdStory
' Affichage des codes de champ
ActiveWindow.View.ShowFieldCodes = True
' Recherche des champs
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text

'BOUCLE SUR TOUTES LES OCCURENCES DU CHAMP D'IMAGE DU DOCUMENT EN COURS
While Selection.Find.Found
' identification en tant que champ d'image en liaison
If InStr(1, tekst, "includepicture", 1) Then
'couper et coller en tant qu'image Bitmap sans liaison
Selection.Cut
Selection.PasteSpecial Link:úlse, DataType:= _
wdPasteDeviceIndependentBitmap, Placement:=wdInLine, DisplayAsIcon _
:úlse
End If
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text
Wend
ActiveDocument.Save
ActiveDocument.Close
Next
End Sub

--
Salutations

Brel Patrice



Bonjour, j'ai plus de 3000 fichiers Word 2000 avec des liaisons éronées et je
souhaiterais supprimer ces liaisons (et non les modifier) grace à un
programme sous Visual Basic ou autre. Pouvez-vous me donner une commande me
permétant de rompre ces liaisons?
Merci






Avatar
Circé
Bonjour,

Je sais pas pourquoi vous voulez réinventer l'eau chaude alors tout
cela est expliqué dans la faq (avec les macros d'anacoluthe) :

Pour supprimer tous les liens dans un fichier :

Sub SupprimerTousLiens()
'macro écrite par anacoluthe
Dim i As Integer
For i = 1 To ActiveDocument.Hyperlinks.Count
ActiveDocument.Hyperlinks(1).Delete
Next i
End Sub


A intégrer à la batchmacro d'anacoluthe qui va faire le travail pour
tous les fichiers d'un répertoire ou ceux qu'on sélectionne...

La batchmacro d'anacoluthe permet de faire fonctionner une macro sur
toute une série de fichiers. On la lance : Word demande quelle est la
macro à exécuter et sur quels fichiers, et tu n'as plus qu'à aller
boire un... ou plusieurs cafés en attendant ! ;)

Circé
http://faqword.free.fr



Itanium a couché sur son écran :
Bonjour.

je vous remercie pour cette petite macro qui me parait tres utile.
Néanmoins j'ai un petit problème dans ce code que je n'arrive pas à résoudre
au niveau de la ligne :

Documents.Open FileName:ª

qui produit une erreur d'exécution '424': un objet est requis.
La variable aa contient: "G:MONDOSSIERDOSSIER1131.doc"

Merci pour votre aide.


Bonsoir,

Voici une petite macro qui devrait répondre à votre problème à copier dans
un module

'------------------------------------------

Sub suppression_des_liens()
'LIMITE: seuls les fichiers Word à gérer doivent se trouver dans le
répertoire

Dim fs, path_fichier, fichier_doc, fc
Dim path_sauvegarde

'---- définition du répertoire contenant les fichiers
Set fs = CreateObject("Scripting.FileSystemObject")
folderspec = InputBox("entrer le chemin du répertoire sans à la fin",
"PATH", "c:")
Set path_fichier = fs.GetFolder(folderspec)
Set fc = path_fichier.Files
On Error GoTo suite
ActiveDocument.Close
suite:
'BOUCLE SUR TOUS LES FICHIERS SE TROUVANT DANS LE REPERTOIRE
For Each fichier_doc In fc
aa = Chr(34) & fichier_doc & Chr(34)

Documents.Open FileName:ª
'Début du document
Selection.HomeKey Unit:=wdStory
' Affichage des codes de champ
ActiveWindow.View.ShowFieldCodes = True
' Recherche des champs
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text

'BOUCLE SUR TOUTES LES OCCURENCES DU CHAMP D'IMAGE DU DOCUMENT EN COURS
While Selection.Find.Found
' identification en tant que champ d'image en liaison
If InStr(1, tekst, "includepicture", 1) Then
'couper et coller en tant qu'image Bitmap sans liaison
Selection.Cut
Selection.PasteSpecial Link:úlse, DataType:= _
wdPasteDeviceIndependentBitmap, Placement:=wdInLine, DisplayAsIcon _
:úlse
End If
With Selection.Find
.Text = "^d"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
tekst = Selection.Text
Wend
ActiveDocument.Save
ActiveDocument.Close
Next
End Sub

--
Salutations

Brel Patrice



Bonjour, j'ai plus de 3000 fichiers Word 2000 avec des liaisons éronées et
je souhaiterais supprimer ces liaisons (et non les modifier) grace à un
programme sous Visual Basic ou autre. Pouvez-vous me donner une commande me
permétant de rompre ces liaisons?
Merci