mes macros de Word 2007 ne s'affichent pas dans Word 2019

jh_kd

XLDnaute Nouveau
Bonjour,

Je suis en train de tester mes macros sur des fichiers existants créés avec Word 2007.
Mais pour un fichier en docm (pas un modèle), les macros de Word 2007 ne s'affichent pas dans Word 2019 (qui s'ouvre en mode compatibilité).
Je suis allé sur Internet et j'ai créé l'affichage "développeur" puis dans sécurité des macros, j'ai coché dans les options de Word, et dans paramètres des macros, l'option "activer toutes les macros (non reco)".
Mais cela ne change rien.
C'est la seule macro pour un seul fichier que j'ai sous Word mais elle est très importante.
Au cas où, j'ai conservé en archives une vieille version de ce fichier que j'ai essayé d'ouvrir (mais je n'ai plus Office 2007, seulement Office 2019) mais cela ne change rien.
Peut-être y a t'il un moyen d'éditer cette macro en txt pour la copier ensuite ???

Merci de votre aide!

Cordialement
JH
 
Dernière édition:

jh_kd

XLDnaute Nouveau
Bonjour,

Soan, voici le fichier attaché codes.docm avec quelques noms seulement.
Je ne me souviens pas si j'ai gardé plusieurs modules dans ce cas (j'ai l'habitude de garder des VBAs en archives pour marquer les différentes étapes d'un projet).
La macro formate un autre document Word (.docx) pour mettre les mots en italiques sur la base de la liste de codes.docm.
Il y a une autre partie (à moins que ce soit une autre macro toujours dans codes.docm) qui consiste à mettre comme lien internet des adresses URL qui au départ ne sont que du texte.
C'est tout ce que je me souviens. J'utilise cette ou ces macros tous les 4 mois environ depuis des années machinalement.

Merci!

JH
 

Pièces jointes

  • codes.docm
    13.4 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
je crois que tu t'es trompé de fichier, car il n'y a aucun code VBA !
y'a seulement une référence à Normal(.dotm), aucun module, et
ThisDocument est vide ! si t'as des macros dans ce fichier, elles
sont drôlement bien cachées !!! 😜 (tu utilises quel truc, pour
les dissimuler aussi bien ? t'es un prestidigitateur ? :p)


soan
 

jh_kd

XLDnaute Nouveau
Soan,

Mes excuses... je ne suis plus tout jeune et je me mélange sans doute les neurones (restants, peu nombreux). C'est Stéphanie la correspondante de ce forum mais je ne peux la joindre (covid oblige et elle n'a pas 2019)
Voici le deuxième fichier qui est en docm aussi et pas en docx comme j'avais noté!
J'espère que c'est celui-là qui contient les macros (que je ne vois pas non plus avec Office 2019).

Merci d'avance (désolé du temps passé pour rien).

JH
 

Pièces jointes

  • wassupKDW.docm
    145.6 KB · Affichages: 3

soan

XLDnaute Barbatruc
Inactif
désolé, mais pour ce 2ème fichier, c'est pareil que pour le 1er :
ThisDocument est vide ; aucun module ; référence à Normal
seulement ; rien d'autre, mais j'ai bien aimé ton joli poisson
de l'unique page. 😜 je te présente son copain Killifish :

Image.jpg


soan
 

jh_kd

XLDnaute Nouveau
Bonsoir Soan,

Merci de ton humour et du clin d’œil (la devinette est facile pour moi, c'est rachovii... sauf que mes connaissances scientifiques ne vont pas jusqu'au Word VBA!)

Je ne sais vraiment pas quoi faire... je vois 2 options faute de mieux :

(1) t'envoyer par mail les 2 fichiers précédents de Mai dernier avec l'ordi qui est mort (Vista, Office 2007) avec lesquels la macro marche en 2007 (j'ai gardé le disque dur)... mais je ne sais pas si c'est possible sur un forum et comment!!!! (je serais gêné de mettre ces 2 fichiers ici en attaché)

(2) reprendre la macro italique à zéro et pour cela j'ai retrouvé un fil ancien de Stéphanie sur ce forum et cela parle de la même chose
(et suivants, pour les réponses du forum)

J'ai essayé d'adapter mais cela ne marche pas. Voici le code VBA avec 2007 (semble-t'il):

Sub wassup()
'
' wassup Macro
Documents.Open "D:\blabla1\blabla2\codes.docm"

For Each p In Documents(doc1).Paragraphs
If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _
listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)
Next

Documents(doc2).Activate
' le document 2 devrait être wassupKDW.docm si je ne me trompe pas (de mémoire)

For i = 1 To listeMots.Count
Selection.Find.ClearFormatting
With Selection.Find
.Text = listeMots.Item(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute = True
Selection.Font.Italic = True
Loop
Next i
End Sub

Si cela pouvait marcher, ce serait super et il me resterait à activer manuellement tous les liens qui étaient réalisés par un autre bout de cette macro ou bien par une autre macro dans codes.docm ou bien dans wassupKDW.docm au moins pour cette fois en dépannage. (ce bout de macro c'est remplacer des liens (en les activant) de texte commençant tous par 'http' et se terminant tous par 'espace]' avec entre les 2 un texte variable (et le lien s'activerait depuis 'http' jusqu'au caractère juste avant 'espace]'... j'espère que je suis clair)

Tu pourrais me dépanner?

Merci d'avance

Cordialement

JH
 

soan

XLDnaute Barbatruc
Inactif
par mail : pas possible, car on n'a pas l'droit de mettre des adresses mail
sur le site XLD (et c'est pareil sur tous les autres sites d'entraide) ; motif :
pas d'infos personnelles sur un forum pour raisons « déontologiques ».

--------------------------------------------------------------------------------

désolé, j'vais pas pouvoir t'aider, car j'connais moins bien le VBA Word
que le VBA Excel ; comme en plus tu parles de remplacer des liens en
les activant, ça n'est plus dans mes compétences.

j'espère qu'un autre intervenant qui s'y connaît mieux que moi en
VBA Word pourra t'aider ; bonne chance !


soan
 

jh_kd

XLDnaute Nouveau
Ah, oh, merci quand même.
Je sépare bien 2 choses, un dépannage à court terme pour les italiques, et puis au-delà l’histoire des liens pour le moyen terme.
J'espère aussi qu'un spécialiste des VBA word pourra m'aider, peut-être avec le liens d'archive du forum, sinon il faudra que j'attende de pouvoir contacter Stéphanie (Stephsteph)
JH
 

jh_kd

XLDnaute Nouveau
Bonjour le forum,

J'ai eu un accès à toutes mes archives et à mes clés USB : tous mes fichiers Word 2007 quand ils sont affichés avec 2019 ont perdu leurs macros VBA.

Bon trêve de commentaires sur MS et sa parfaite continuité verticale. Heureusement sur ce forum la continuité existe (bravo à David).

En cherchant sur le compte de Stéphanie ici par chance j'ai trouvé un code sur le sujet de l'italique et je l'ai copié.

J'ai fait jouer la macro mais elle ne marche pas, avec je pense une petite erreur (entre 2007 et 2019? ou autre?) que les experts du forum vont sans doute trouver facilement.

Voici l'erreur : erreur de compilation next sans for (et le for juste avant l'instruction Documents(doc2).Activate est surligné en bleu

sub italics_taxa_final

'

' italics_taxa_final Macro

'

'



Dim p As Paragraph

Dim listeMots As New Collection

Dim i As Long

Dim doc1, doc2 As String



doc1 = "codes.docm"

doc2 = "wassupKDW.docm"


Documents(doc1).Activate



For Each p In Documents(doc1).Paragraphs

If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _

listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)

Next



Documents(doc2).Activate



For i = 1 To listeMots.Count

Selection.Find.ClearFormatting

With Selection.Find

.Text = listeMots.Item(i)

.Forward = True

.Wrap = wdFindContinue

.Format = False

.MatchCase = True

.MatchWholeWord = True

.MatchWildcards = False

.MatchSoundsLike = False

.MatchAllWordForms = False

End With

Do While Selection.Find.Execute = True

Selection.Font.Italic = True

Loop

Next i

End Sub

Voilà, en vous remerciant de votre aide rapide,

Cordialement,

JH

PS : ceux qui veulent tester la macro ont également les 2 fichiers attachés dans un message précédent
 

jh_kd

XLDnaute Nouveau
Bonjour Soan,

Je suis allé dans tous les détails des archives de Stéphanie (Stephsteph) du forum et là j'ai fini par trouver.

Voici le code qui marche (pour les visiteurs du forum que cela intéresse... c'était une inversion de code doc1/doc2):

Sub italics_taxa_final2()
'
' italics_taxa_final Macro
'
'

Dim p As Paragraph
Dim listeMots As New Collection
Dim i As Long
Dim doc1, doc2 As String

doc2 = "wassupKDW.docm"
doc1 = "codes.docm"


For Each p In Documents(doc1).Paragraphs
If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _
listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)
Next

Documents(doc2).Activate

For i = 1 To listeMots.Count
Selection.Find.ClearFormatting
With Selection.Find
.Text = listeMots.Item(i)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute = True
Selection.Font.Italic = True
Loop
Next i
End Sub



Il reste cette histoire de liens, mais c'est moins urgent. Je vais les faire manuellement.

Encore merci Soan pour toute ta coopération.

JH
 

soan

XLDnaute Barbatruc
Inactif
@jh_kd

J'ai « arrangé » toute ta sub ainsi :
VB:
Option Explicit

Sub italics_taxa_final()

  Dim listeMots As New Collection
  Dim p As Paragraph
  Dim doc1$, doc2$, i&
 
  doc1 = "codes.docm": doc2 = "wassupKDW.docm"
 
  Documents(doc1).Activate
 
  For Each p In Documents(doc1).Paragraphs
    If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _
      listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)
  Next p
 
  Documents(doc2).Activate
 
  For i = 1 To listeMots.Count
    
    Selection.Find.ClearFormatting
    
    With Selection.Find
      .Text = listeMots.Item(i)
      .Forward = True
      .Wrap = wdFindContinue
      .MatchCase = True
      .MatchWholeWord = True
    End With
    
    Do While Selection.Find.Execute = True
      Selection.Font.Italic = True
    Loop
 
  Next i

End Sub
soan
 

soan

XLDnaute Barbatruc
Inactif
@jh_kd

et voilà pour ta sub italics_taxa_final2() :
VB:
Option Explicit

Sub italics_taxa_final2()
  Dim listeMots As New Collection
  Dim p As Paragraph
  Dim doc1$, doc2$, i&

  doc1 = "codes.docm": doc2 = "wassupKDW.docm"

  For Each p In Documents(doc1).Paragraphs
    If Left(p.Range.Text, Len(p.Range.Text) - 1) <> "" Then _
      listeMots.Add Left(p.Range.Text, Len(p.Range.Text) - 1)
  Next p

  Documents(doc2).Activate

  For i = 1 To listeMots.Count
    Selection.Find.ClearFormatting
    With Selection.Find
      .Text = listeMots.Item(i)
      .Forward = True
      .Wrap = wdFindContinue
      .MatchCase = True
      .MatchWholeWord = True
    End With
    Do While Selection.Find.Execute = True
      Selection.Font.Italic = True
    Loop
  Next i

End Sub
soan
 

Discussions similaires

Statistiques des forums

Discussions
312 047
Messages
2 084 864
Membres
102 690
dernier inscrit
souleymaane