Bonjour à toutes et tous,
Je dispose d'un index et désire venir par VB (ou VBA) lire chaque item
afin de le modifier.
Comment faire ?
Bonjour à toutes et tous,
Je dispose d'un index et désire venir par VB (ou VBA) lire chaque item
afin de le modifier.
Comment faire ?
Bonjour à toutes et tous,
Je dispose d'un index et désire venir par VB (ou VBA) lire chaque item
afin de le modifier.
Comment faire ?
Pour préciser mon intention :
J'ai un texte historique avec des dates : je ne peux (veux) donc pas
changer la présentation des dates dans le document - tantôt 25
decembre 1870, tantôt 3 janv 1871, quand ce n'est pas 4 jan.71-
Et je désire constituer un index des dates ; c'est là où ça coince
Word ne (re)connait pas les formats de dates et classe celles-ci selon
l'ordre alphanumérique soit 3 janv 1871 puis 25 déc 1870 ce qui n'est
pas souhaité.
Pour préciser mon intention :
J'ai un texte historique avec des dates : je ne peux (veux) donc pas
changer la présentation des dates dans le document - tantôt 25
decembre 1870, tantôt 3 janv 1871, quand ce n'est pas 4 jan.71-
Et je désire constituer un index des dates ; c'est là où ça coince
Word ne (re)connait pas les formats de dates et classe celles-ci selon
l'ordre alphanumérique soit 3 janv 1871 puis 25 déc 1870 ce qui n'est
pas souhaité.
Pour préciser mon intention :
J'ai un texte historique avec des dates : je ne peux (veux) donc pas
changer la présentation des dates dans le document - tantôt 25
decembre 1870, tantôt 3 janv 1871, quand ce n'est pas 4 jan.71-
Et je désire constituer un index des dates ; c'est là où ça coince
Word ne (re)connait pas les formats de dates et classe celles-ci selon
l'ordre alphanumérique soit 3 janv 1871 puis 25 déc 1870 ce qui n'est
pas souhaité.
Ce serait tellement plus simple pour tout le monde si vous restiez
dans la même ficelle de discussion !!!
J'ai mis comme exemple à cette question le Pb qui me turlupine en ce
Amha ????
votre problème doit d'abord se régler dans les entrées d'index.
Ainsi 25 décembre 1870 doit être indexé { XE "1870-12-25" }
Ensuite il vous faut une macro qui va se contenter de faire
une série de RR (Rechercher-remplacer) sur l'index obtenu.
Est-ce qu'on avance ?
Ça OUI je ne pensais pas que RR était aussi puissant,... ...quand je
Ce serait tellement plus simple pour tout le monde si vous restiez
dans la même ficelle de discussion !!!
J'ai mis comme exemple à cette question le Pb qui me turlupine en ce
Amha ????
votre problème doit d'abord se régler dans les entrées d'index.
Ainsi 25 décembre 1870 doit être indexé { XE "1870-12-25" }
Ensuite il vous faut une macro qui va se contenter de faire
une série de RR (Rechercher-remplacer) sur l'index obtenu.
Est-ce qu'on avance ?
Ça OUI je ne pensais pas que RR était aussi puissant,... ...quand je
Ce serait tellement plus simple pour tout le monde si vous restiez
dans la même ficelle de discussion !!!
J'ai mis comme exemple à cette question le Pb qui me turlupine en ce
Amha ????
votre problème doit d'abord se régler dans les entrées d'index.
Ainsi 25 décembre 1870 doit être indexé { XE "1870-12-25" }
Ensuite il vous faut une macro qui va se contenter de faire
une série de RR (Rechercher-remplacer) sur l'index obtenu.
Est-ce qu'on avance ?
Ça OUI je ne pensais pas que RR était aussi puissant,... ...quand je
Il ne me reste plus qu'à mettre ça en VB......
Il ne me reste plus qu'à mettre ça en VB......
Il ne me reste plus qu'à mettre ça en VB......
Au pire enregistrez vos RR avec l'enregistreur de macros.
Au pire enregistrez vos RR avec l'enregistreur de macros.
Au pire enregistrez vos RR avec l'enregistreur de macros.
Voici le fruit de mon labeur :
3 sub pour successivement :
1) trouver l'index des dates: FindDateIndex
2)suivi de : convertir les champs dates dont les entrées sont sous la
forme AAAA-MM-JJ : Conversion_AAAAMMJJ_en_JJMMAAAA
3) puis encore une conversion du n° de mois en son nom :
Conversion_MM_en_MOIS
Ces 3 sub's, lancées successivement, fonctionnent correctement -sur
le fond- si ce n'est que les deux dernières ne se limitent pas à la
sélection réalisée par la 1ére sub. Ce qui conduit à la
destruction des entrées d'index dans le texte, puisque { XE
"2006-12-25:Noël 2006" } devient { XE "2006 decembre 25:Noël 2006" }
Ne peut on pas avoir quelque chose comme
While Selection.Find.Execute(findtext:=NumMois(iMois))
???????????
Wend
en plaçant le code des macros de conversion à la pace des ?????
'*********************************************************************************************
Sub FindDateIndex()
'RECHERCHE UN CHAMP INDEX DE DATES NOTÉ {INDEX f "d" ......}
Dim objChamp As Field
'les codes de champ peuvent ne pas étre visibles à l'écran
ActiveDocument.Range.TextRetrievalMode.IncludeFieldCodes = True
'PASSER EN REVUE TOUS LES CHAMPS DU DOCUMENT ACTIF
For Each objChamp In ActiveDocument.Fields
'SI LE CHAMP EST UN INDEX
If objChamp.Type = wdFieldIndex Then
'afficher le code de champ
If InStr(1, objChamp.Code, "f ""d""", vbTextCompare) Then
'si on a affaire à l'index de date alors sélectionner ce
champ
objChamp.Select
MsgBox objChamp.Code & " " & objChamp.Index
End If
End If
Next objChamp
End Sub
'*********************************************************************************************
Sub Conversion_AAAAMMJJ_en_JJMMAAAA()
'CONVERTIR LES DATES DU FORMAT AAAA-MM-JJ EN JJ-MM-AAAA
'!!!!!!!!!!!!!! le remplacement n'est pas restreint à la sélection
!!!!!!!!!!!!!
'LES ENTRÉES D'INDEX SOUS LA FORME AAAA-MM-JJ SONT MIS SOUS LA FORME
JJ-MM-AAAA
'forme AAAA-MM-JJ pour avoir un classement chronologique lors de la
compilation de l'index
' !!!! SELECTIONNER L'INDEX AVANT TOUTE AUTRE ACTION
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([0-9]{4})-([0-9]{2})-([0-9]{2})"
.Replacement.Text = "3-2-1"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
SubEnd:
End Sub
'*********************************************************************************************
Sub Conversion_MM_en_MOIS()
'REMPLACEMENT DU NUMERO DU MOIS PAR SON NOM
'!!!!!!!!!!!!!! le remplacement n'est pas restreint à la sélection
!!!!!!!!!!
Dim iMois As Integer 'indice de boucle pour les 12 mois
NumMois = Array("-01-", "-02-", "-03-", "-04-", "-05-", "-06-", "-07-",
"-08-", "-09-", "-10-", "-11-", "-12-")
NomMois = Array(" janvier ", " février ", " mars ", " avril ", " mai
", " juin ", " juillet ", " août ", " septembre ", " octobre ", "
novembre ", " décembre ")
'BOUCLER POUR LES 12 -MM-
For iMois = 0 To 11
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = NumMois(iMois)
.Replacement.Text = NomMois(iMois)
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next iMois
End Sub
'*********************************************************************************************
Voici le fruit de mon labeur :
3 sub pour successivement :
1) trouver l'index des dates: FindDateIndex
2)suivi de : convertir les champs dates dont les entrées sont sous la
forme AAAA-MM-JJ : Conversion_AAAAMMJJ_en_JJMMAAAA
3) puis encore une conversion du n° de mois en son nom :
Conversion_MM_en_MOIS
Ces 3 sub's, lancées successivement, fonctionnent correctement -sur
le fond- si ce n'est que les deux dernières ne se limitent pas à la
sélection réalisée par la 1ére sub. Ce qui conduit à la
destruction des entrées d'index dans le texte, puisque { XE
"2006-12-25:Noël 2006" } devient { XE "2006 decembre 25:Noël 2006" }
Ne peut on pas avoir quelque chose comme
While Selection.Find.Execute(findtext:=NumMois(iMois))
???????????
Wend
en plaçant le code des macros de conversion à la pace des ?????
'*********************************************************************************************
Sub FindDateIndex()
'RECHERCHE UN CHAMP INDEX DE DATES NOTÉ {INDEX f "d" ......}
Dim objChamp As Field
'les codes de champ peuvent ne pas étre visibles à l'écran
ActiveDocument.Range.TextRetrievalMode.IncludeFieldCodes = True
'PASSER EN REVUE TOUS LES CHAMPS DU DOCUMENT ACTIF
For Each objChamp In ActiveDocument.Fields
'SI LE CHAMP EST UN INDEX
If objChamp.Type = wdFieldIndex Then
'afficher le code de champ
If InStr(1, objChamp.Code, "f ""d""", vbTextCompare) Then
'si on a affaire à l'index de date alors sélectionner ce
champ
objChamp.Select
MsgBox objChamp.Code & " " & objChamp.Index
End If
End If
Next objChamp
End Sub
'*********************************************************************************************
Sub Conversion_AAAAMMJJ_en_JJMMAAAA()
'CONVERTIR LES DATES DU FORMAT AAAA-MM-JJ EN JJ-MM-AAAA
'!!!!!!!!!!!!!! le remplacement n'est pas restreint à la sélection
!!!!!!!!!!!!!
'LES ENTRÉES D'INDEX SOUS LA FORME AAAA-MM-JJ SONT MIS SOUS LA FORME
JJ-MM-AAAA
'forme AAAA-MM-JJ pour avoir un classement chronologique lors de la
compilation de l'index
' !!!! SELECTIONNER L'INDEX AVANT TOUTE AUTRE ACTION
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([0-9]{4})-([0-9]{2})-([0-9]{2})"
.Replacement.Text = "3-2-1"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
SubEnd:
End Sub
'*********************************************************************************************
Sub Conversion_MM_en_MOIS()
'REMPLACEMENT DU NUMERO DU MOIS PAR SON NOM
'!!!!!!!!!!!!!! le remplacement n'est pas restreint à la sélection
!!!!!!!!!!
Dim iMois As Integer 'indice de boucle pour les 12 mois
NumMois = Array("-01-", "-02-", "-03-", "-04-", "-05-", "-06-", "-07-",
"-08-", "-09-", "-10-", "-11-", "-12-")
NomMois = Array(" janvier ", " février ", " mars ", " avril ", " mai
", " juin ", " juillet ", " août ", " septembre ", " octobre ", "
novembre ", " décembre ")
'BOUCLER POUR LES 12 -MM-
For iMois = 0 To 11
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = NumMois(iMois)
.Replacement.Text = NomMois(iMois)
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next iMois
End Sub
'*********************************************************************************************
Voici le fruit de mon labeur :
3 sub pour successivement :
1) trouver l'index des dates: FindDateIndex
2)suivi de : convertir les champs dates dont les entrées sont sous la
forme AAAA-MM-JJ : Conversion_AAAAMMJJ_en_JJMMAAAA
3) puis encore une conversion du n° de mois en son nom :
Conversion_MM_en_MOIS
Ces 3 sub's, lancées successivement, fonctionnent correctement -sur
le fond- si ce n'est que les deux dernières ne se limitent pas à la
sélection réalisée par la 1ére sub. Ce qui conduit à la
destruction des entrées d'index dans le texte, puisque { XE
"2006-12-25:Noël 2006" } devient { XE "2006 decembre 25:Noël 2006" }
Ne peut on pas avoir quelque chose comme
While Selection.Find.Execute(findtext:=NumMois(iMois))
???????????
Wend
en plaçant le code des macros de conversion à la pace des ?????
'*********************************************************************************************
Sub FindDateIndex()
'RECHERCHE UN CHAMP INDEX DE DATES NOTÉ {INDEX f "d" ......}
Dim objChamp As Field
'les codes de champ peuvent ne pas étre visibles à l'écran
ActiveDocument.Range.TextRetrievalMode.IncludeFieldCodes = True
'PASSER EN REVUE TOUS LES CHAMPS DU DOCUMENT ACTIF
For Each objChamp In ActiveDocument.Fields
'SI LE CHAMP EST UN INDEX
If objChamp.Type = wdFieldIndex Then
'afficher le code de champ
If InStr(1, objChamp.Code, "f ""d""", vbTextCompare) Then
'si on a affaire à l'index de date alors sélectionner ce
champ
objChamp.Select
MsgBox objChamp.Code & " " & objChamp.Index
End If
End If
Next objChamp
End Sub
'*********************************************************************************************
Sub Conversion_AAAAMMJJ_en_JJMMAAAA()
'CONVERTIR LES DATES DU FORMAT AAAA-MM-JJ EN JJ-MM-AAAA
'!!!!!!!!!!!!!! le remplacement n'est pas restreint à la sélection
!!!!!!!!!!!!!
'LES ENTRÉES D'INDEX SOUS LA FORME AAAA-MM-JJ SONT MIS SOUS LA FORME
JJ-MM-AAAA
'forme AAAA-MM-JJ pour avoir un classement chronologique lors de la
compilation de l'index
' !!!! SELECTIONNER L'INDEX AVANT TOUTE AUTRE ACTION
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([0-9]{4})-([0-9]{2})-([0-9]{2})"
.Replacement.Text = "3-2-1"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
SubEnd:
End Sub
'*********************************************************************************************
Sub Conversion_MM_en_MOIS()
'REMPLACEMENT DU NUMERO DU MOIS PAR SON NOM
'!!!!!!!!!!!!!! le remplacement n'est pas restreint à la sélection
!!!!!!!!!!
Dim iMois As Integer 'indice de boucle pour les 12 mois
NumMois = Array("-01-", "-02-", "-03-", "-04-", "-05-", "-06-", "-07-",
"-08-", "-09-", "-10-", "-11-", "-12-")
NomMois = Array(" janvier ", " février ", " mars ", " avril ", " mai
", " juin ", " juillet ", " août ", " septembre ", " octobre ", "
novembre ", " décembre ")
'BOUCLER POUR LES 12 -MM-
For iMois = 0 To 11
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = NumMois(iMois)
.Replacement.Text = NomMois(iMois)
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next iMois
End Sub
'*********************************************************************************************
Bonjour !
Dans toutes vos macros de RR remplacez déjà
.Wrap = wdFindAsk
par
.Wrap = wdFindStop
pour qu'au moins le RR ne déborde pas de la Selection !!!!!
Bonjour !
Dans toutes vos macros de RR remplacez déjà
.Wrap = wdFindAsk
par
.Wrap = wdFindStop
pour qu'au moins le RR ne déborde pas de la Selection !!!!!
Bonjour !
Dans toutes vos macros de RR remplacez déjà
.Wrap = wdFindAsk
par
.Wrap = wdFindStop
pour qu'au moins le RR ne déborde pas de la Selection !!!!!