XL 2013 variable dans nom de Variable..

fredl

XLDnaute Impliqué
Bonjour à tous,
"variable dans nom de Variable..." mais où va-t'il chercher cela? (si vous le pensez, vous avez raison!)

Je viens faire appel à vos lumières suite à recherche infructueuse dans le forum.

J'ai 70 variables (Vtitre1,Vtitre2,.....Vtitre70)
J'ai une macro qui utilise successivement ces 70 variables préchargées comme suit avec exactement le même contenu de code au nom de la variable prêt :
(pour info, je pilote ici un doc word, mais la problématique soulevée est valable pour toute application office puisque elle concerne un problème de gestion de nom de variable)



'////////////////////////////////////////////////////////////////////////////
If ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre1).Start, ActiveDocument.Bookmarks(Vtitre1).End) = "FIN DU WEEKLY" Then GoTo 100

If ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre2).Start, ActiveDocument.Bookmarks(Vtitre2).End) = "FIN DU WEEKLY" Then GoTo 100


If..etc(repetition du code 70 fois - ça fait long!).............................................
........................................................................................................................................

If ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre70).Start, ActiveDocument.Bookmarks(Vtitre70).End) = "FIN DU WEEKLY" Then GoTo 100
'////////////////////////////////////////////////////////////////////////////



Afin de simplifier ma macro je souhaiterai écrire un code de ce type :



'////////////////////////////////////////////////////////////////////////////
For n=1 to 70
If ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre & n).Start, ActiveDocument.Bookmarks(Vtitre & n).End) = "FIN DU WEEKLY" Then GoTo 100
next
'////////////////////////////////////////////////////////////////////////////



Bien sûr ce code ne fonctionne pas, malheureusement pour moi..., mais existerait il une astuce pour bien faire? (Je me permets de rêver...)

Merci d'avance pour vos conseil!;)

cordialement

Frédéric
 

Hieu

XLDnaute Impliqué
Salut à tous,

Dans le même délire, je ferai comme ça :
VB:
Dim Vtitre(1 to 70)
...
For n=1 to 70
If ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre(n)).Start, ActiveDocument.Bookmarks(Vtitre(n)).End) = "FIN DU WEEKLY" Then GoTo 100
next n
 

fredl

XLDnaute Impliqué
oups!
j'avais cet affichage là de ton message dans la fenêtre VBA du forum :

Dim Vitre(1 To 60)
For n=1 to 70
If ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre & n).Start, ActiveDocument.Bookmarks(Vtitre & n).End) = "FIN DU WEEKLY" Then GoTo 100
next n


maintenant je le "vois" comme il faut.
désolé du dérangement
Merci
 

fredl

XLDnaute Impliqué
GENIALISSIME!!!!!!! Hieu et PierreJean!
grâce à vous, ma macro passe de 600 lignes à une vingtaine de lignes!!!!!!!
vous êtes trop forts!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ENORME!
je mets ma macro en guise d'exemple pour les internautes!
:D:D:DMon rêve est devenu réalité grâce à vous!:D:D:D

;)encore merci!;)
:) Frédéric:)

Code:
Sub SupprimerSectionsVides()
'initialisation de mes 2 array (array(0) ne me servant pas)
Vtitre = Array("0")
VcontenuTitre = Array("0")
'chargement de tous les titres de mon doc (gérés par des signets)
For Each bmk In ActiveDocument.Range.Bookmarks
    n = n + 1
   [B] 'ajouter une valeur au tableau'chargement du nouveau num de titre[/B]
[B]    ReDim Preserve Vtitre(UBound(Vtitre) + 1)[/B]
[B]    Vtitre(UBound(Vtitre)) = bmk.Name[/B]
   [B] 'chargement du nouveau contenu de titre[/B]
    [B]ReDim Preserve VcontenuTitre(UBound(VcontenuTitre) + 1)[/B]
[B]    VcontenuTitre(UBound(VcontenuTitre)) = ActiveDocument.Range(bmk.Start, bmk.End)[/B]
Next
 
'suppression de tous les paragraphes vides sauf les enTetes
[B]For n = 1 To 70[/B]
    'ne pas supprimer certains titres :
    If VcontenuTitre(n) = "Avancement projets" Or VcontenuTitre(n) = "Plateforme chimie" Or VcontenuTitre(n) = "Biomatériaux" _
    Or VcontenuTitre(n) = "Matériaux nanoporeux" Or VcontenuTitre(n) = "Microbiologie" Or VcontenuTitre(n) = "Electrochimie" _
    Or VcontenuTitre(n) = "Nanoparticules - Lipidots" Or VcontenuTitre(n) = "Microbiologie" Or VcontenuTitre(n) = "Electrochimie" _
    Then GoTo 50
    'si on est en fin de doc, sortir
    If VcontenuTitre(n) = "FIN DU WEEKLY" Then GoTo 100
    'si rien d'écrit dans le paragraphe, le supprimer
   If ActiveDocument.Bookmarks([B]Vtitre(n + 1)[/B]).Start - ActiveDocument.Bookmarks([B]Vtitre(n)[/B]).End <= 2 Then 
        ActiveDocument.Range(ActiveDocument.Bookmarks([B]Vtitre(n)[/B]).Start, ActiveDocument.Bookmarks([B]Vtitre(n + 1)[/B]).Start).Delete
    End If
50
Next
100
'Suppression de "Fin du weekly"
ActiveDocument.Range(ActiveDocument.Bookmarks(Vtitre(n)).Start, ActiveDocument.Bookmarks(Vtitre(n)).End).Delete
End Sub[/SIZE][/I][SIZE=2]
 

Discussions similaires

Statistiques des forums

Discussions
312 273
Messages
2 086 702
Membres
103 376
dernier inscrit
marionromeo