OVH Cloud OVH Cloud

VBA bookmark

11 réponses
Avatar
Bonsoir à tous,
(Désolé, au cas où vous le voyez deux fois, je reposte)
Je suis prêt à proposer à Cabri-Auxi une solution bricolé par moi macro mais je bute sur ça !!!! :
Pourquoi la sub de Guy change bien de signet à chaque next et pas la mienne !!!
-------------------------
Guy :

Sub AfficheNomSignet()
' Macro écrite par Guy Moncomble
Dim varSignet As Bookmark
For Each varSignet In ActiveDocument.Bookmarks
ActiveDocument.Comments.Add Range:=varSignet.Range, Text:=varSignet.Name
Next varSignet
End Sub
-------------------------
La mienne :
Sub ConversionInverse()
Dim varSignet As Bookmark
For Each varSignet In ActiveDocument.Bookmarks
'varSignet.Select
varSignet.Range.ConvertToTable Separator:=wdSeparateByTabs, Format:=wdTableFormatList8

Next varSignet
end sub


Je tourne en rond j'ai même essayer une solution du type de l'aide dont je ne retrouve pas le code
-------------------
If ActiveDocument.Bookmarks.Count >= 1 Then
ReDim aMarks(ActiveDocument.Bookmarks.Count - 1)
i = 0
For Each aBookmark In ActiveDocument.Bookmarks
aMarks(i) = aBookmark.Name
i = i + 1
Next aBookmark
End If-------------------
Y veut pas me faire mon Redim, y faut que ce soit une table et si c'en est une y veut pas la redimensionner
sous prétexte qu'elle l'ai déjà !Je veux donc en fait balayer les signets et transformer la range ou la selection peu importe, en
tableau et là je coince, coince, coince... La range ou la selection peu importe, j'ai bien compris qu'il y avait une différence
important mais dans les faits, je dois pas être fait pour le VBA.
Merci de toute contribution.
Merci d'avoir lu jusque là.

10 réponses

1 2
Avatar
Anacoluthe
Bonjour !

'@pollo' nous a écrit ...
Dim varSignet As Bookmark
For Each varSignet In ActiveDocument.Bookmarks
'varSignet.Select
varSignet.Range.ConvertToTable Separator:=wdSeparateByTabs, Format:=wdTableFormatList8
Next varSignet
end sub


Bien que ConvertToTable admette des arguments facultatifs, il est
plus prudent de les préciser en particulier NumColumns qui doit
être compatible. Ensuite tu risques de boucler si le signet suivant
se retrouve le même : bonjour l'infini et au delà ;-) ))

Le Redim avec une variable demande d'abord une déclaration Dim

je dois pas être fait pour le VBA.
Ben moi non plus... Et heureusement, non ? :-D )))


Anacoluthe
« Vers l’infini et au-delà !»
- BUZZ L’ÉCLAIR

Avatar
Bonjour à tous,
Ensuite tu risques de boucler si le signet suivant
se retrouve le même : bonjour l'infini et au delà ;-) ))
Oui c'est bien ça le problème incompréhensible !


Le code de Guy sur le fichier de notre ami Cabri-Auxi mets bien les bons commentaires (mes signets s'appellent Table1, Table2
jusqu'à 5) :
Guy :

Sub AfficheNomSignet()
' Macro écrite par Guy Moncomble
Dim varSignet As Bookmark
For Each varSignet In ActiveDocument.Bookmarks
ActiveDocument.Comments.Add Range:=varSignet.Range, Text:=varSignet.Name
Next varSignet
End Sub
-------------------------
Et effectivement mon code boucle à me convertir mon premier tableau uniquement.
Sub ConversionInverse()
Dim varSignet As Bookmark
For Each varSignet In ActiveDocument.Bookmarks
'varSignet.Select
varSignet.Range.ConvertToTable Separator:=wdSeparateByTabs, Format:=wdTableFormatList8

Next varSignet
end sub
Il n'y a pourtant pas une grosse différence ou bien je ne la vois pas entre le code de Guy et le miens.
J'ai évidement essayer avec select et ça fait pareil.

Merci de toute contribution.
Merci d'avoir lu jusque là.








Bonjour !

'@pollo' nous a écrit ...
Dim varSignet As Bookmark
For Each varSignet In ActiveDocument.Bookmarks
'varSignet.Select
varSignet.Range.ConvertToTable Separator:=wdSeparateByTabs, Format:=wdTableFormatList8
Next varSignet
end sub


Bien que ConvertToTable admette des arguments facultatifs, il est
plus prudent de les préciser en particulier NumColumns qui doit
être compatible. Ensuite tu risques de boucler si le signet suivant
se retrouve le même : bonjour l'infini et au delà ;-) ))

Le Redim avec une variable demande d'abord une déclaration Dim

je dois pas être fait pour le VBA.
Ben moi non plus... Et heureusement, non ? :-D )))


Anacoluthe
« Vers l’infini et au-delà !»
- BUZZ L’ÉCLAIR

Avatar
Anacoluthe
Bonjour !

'@pollo' nous a écrit ...
Ensuite tu risques de boucler si le signet suivant
se retrouve le même : bonjour l'infini et au delà ;-) ))


Oui c'est bien ça le problème incompréhensible !


Les deux macros sont loin d'être équivalentes : Guy ajoute un
commentaire, toi tu /convertis/ le texte du signet en tableau
(pas bien compris l'objectif). Le mieux serait de supprimer
le signet. Soit par exemple en reprenant ton code :

Sub ConversionInverse()
Dim varSignet As Bookmark
Dim Ici As Range
For Each varSignet In ActiveDocument.Bookmarks
Set Ici = varSignet.Range
varSignet.Delete
Ici.ConvertToTable Separator:=wdSeparateByTabs, _
Format:=wdTableFormatList8
Next varSignet
End Sub

Anacoluthe
« Vers l’infini et au-delà !»
- BUZZ L’ÉCLAIR


Avatar
Bonjour !

(pas bien compris l'objectif).
Ben c'était la seule méthode que je croyais pouvoir mener à bien pour résoudre le problème : http://minilien.fr/a0k234 (Tu n'avais

pas pu trouver avec le nom de l'auteur avec ton super navigateur ? ;-))

Bon alors :
Le mieux serait de supprimer
le signet. Soit par exemple en reprenant ton code :

Sub ConversionInverse()
Dim varSignet As Bookmark
Dim Ici As Range
For Each varSignet In ActiveDocument.Bookmarks
Set Ici = varSignet.Range
varSignet.Delete
Ici.ConvertToTable Separator:=wdSeparateByTabs, _
Format:=wdTableFormatList8
Next varSignet
End Sub
Ca marche, c'est super mais je ne vois pas pourquoi quand on ajoute un commentaire le signet suivant est le signet suivant et quand

on transforme le contenu du signet en tableau le signet suivant est le même signet sauf si on supprime le signet.
Y a un bouquin qui explique ça ? Allez A~, c'est quand que tu sort ton bouquin pour ceux qui ne sont pas fait pour VBA ? Ca
permettera à Geo d'étendre ses connaissances en matière d'Alias (Salut Geo)-Quoique je suis sur qu'il sait déjà.

Adesias, merci beaucoup, pour moi c'est toujours un vrai plaisir.
Merci d'avoir lu jusque là.

Avatar
Geo
Bonjour @pollo


Ca marche, c'est super mais je ne vois pas pourquoi quand on ajoute
un commentaire le signet suivant est le signet suivant et quand on
transforme le contenu du signet en tableau le signet suivant est le
même signet sauf si on supprime le signet.
Y a un bouquin qui explique ça ?


j'ai lu autrefois une explication donnée par l'excellent Laurent Longre,
c'était clair et lumineux, mais j'ai oublié depuis.
Tout ce que j'ai retenu c'est qu'il faut se méfier des boucles for each
quand on ajoute ou supprime un élément sur lequel on tourne, il y a un
glissement que certains savent contrôler.
Donc j'utilise maintenant des indices dans ce cas, même si c'est un peu
plus long à écrire.

Allez A~, c'est quand que tu sort
ton bouquin pour ceux qui ne sont pas fait pour VBA ?


Il a déjà fait le didacticiel de la faq,
Et il veut pas devenir Mvp, alors Mvp à vie, tu penses ?

Ca permettera à Geo d'étendre ses connaissances en matière d'Alias (Salut
Geo)-Quoique je suis sur qu'il sait déjà.


J'ai une grande marge de progrès en la matière :-)
A+.

Avatar
Anacoluthe
Bonjour @pollo et Geo !

'Geo' nous a écrit ...
j'ai lu autrefois une explication donnée par l'excellent Laurent Longre,
c'était clair et lumineux, mais j'ai oublié depuis.
Tout ce que j'ai retenu c'est qu'il faut se méfier des boucles for each
quand on ajoute ou supprime un élément sur lequel on tourne, il y a un
glissement que certains savent contrôler.
Donc j'utilise maintenant des indices dans ce cas, même si c'est un peu
plus long à écrire.


Chaque 'collection' a sa méthode interne d'être comptée et
sa méthode d'être indéxée. L'ordre de l'énumération n'est
pas forcément l'ordre de l'indexation qui lui-même n'est pas
forcément l'ordre logique des items (par exemple l'ordre
d'apparition dans un document). Certains objets à l'évidence
'bricolés' dans VBA forment des collections très bizarres !
Les signets et les liens hypertexte sont par exemple
à ranger dans les bizarres :-D )))

Allez A~, c'est quand que tu sort
ton bouquin pour ceux qui ne sont pas fait pour VBA ?
Il a déjà fait le didacticiel de la faq,

Et il veut pas devenir Mvp, alors Mvp à vie, tu penses ?


M'vouiiii, il me faudrait un MVP co-auteur(e) pour vendre...
:-) ))

Anacoluthe
« Et comme on veut pas nous mettre une étiquette,
On nous met dans les "divers" et les "bizarres".
On n'prend pas nos petites chansons dans les guinguettes,
On n'entend pas nos refrains sur les boulevards. »
- Yves DUTEIL


Avatar
Circé
Bonjour à tous !

Il a déjà fait le didacticiel de la faq,



Ouais, mais l'a pas fini... ;-) Allez hop ! un p'tit coup de pression
!... :-)))

Et il veut pas devenir Mvp, alors Mvp à vie, tu penses ?
C'est normal, il est hors concours...



M'vouiiii, il me faudrait un MVP co-auteur(e) pour vendre...


Geooooo !!! Tu sais ce qu'il te reste à faire ?... ;-)))
Je vous soutiendrai moralement ! ;-)

Circé

:-) ))

Anacoluthe
« Et comme on veut pas nous mettre une étiquette,
On nous met dans les "divers" et les "bizarres".
On n'prend pas nos petites chansons dans les guinguettes,
On n'entend pas nos refrains sur les boulevards. »
- Yves DUTEIL



Avatar
Bonsoir et bonne fin de semaine à tous,
D'abord merci beaucoup de toute ces explications, j'aime définitivement les alias accroché à ce fil...
C'est une montée chromatique ? :
Et il veut pas devenir Mvp, alors Mvp à vie, tu penses ?
C'est normal, il est hors concours...



M'vouiiii, il me faudrait un MVP co-auteur(e) pour vendre...


Geooooo !!! Tu sais ce qu'il te reste à faire ?... ;-)))
Je vous soutiendrai moralement ! ;-)
En tout cas je trouve que l'idée muri bien, je suis sur que l'on pourrait trouver des voix pour mettre ce projet en musique...


Bon y a des chances que ce serait un concert de cornemuse :-)

Chaque 'collection' a sa méthode interne d'être comptée et
sa méthode d'être indéxée. L'ordre de l'énumération n'est...
Merci de ces explications qui montrent la complexité de la question.


Merci encore à tous.
Merci d'avoir lu jusque là.



Avatar
Geo
Bonjour Circé


M'vouiiii, il me faudrait un MVP co-auteur(e) pour vendre...


Geooooo !!! Tu sais ce qu'il te reste à faire ?... ;-)))
Je vous soutiendrai moralement ! ;-)


Encore faudrait-il avoir encore quelque chose de nouveau à écrire.
Vous avez vu le nombre de bouquins ?
Il y en a encore de nouveaux arrivés sur Word 2003.

Mouais, quand je serai à la retraite ce sera Word 2006 ou 2007 sans doute,
Tiens au fait quelqu'un connaît les futures évolutions ?
Si on rêvait un peu t qu'on fasse des voeux :
Des formulaires simples, souples et puissants
Des fonctions qu'on pourrait écrire soi-même sous forme de macros,
les en-tête et les pieds de page qui suivraient la mise en page des
sections,
Un éditeur de formules mathématiques pratique.

Finalement je crois que je vais faire un bouquin sur les évolutions
souhaitées dans Word :-D
--

A+


Avatar
Circé
Bonsoir Geo,

Beaucoup de bouquins, certes, mais si peu sur Word et le VBA... et... Powerpoint ?...

Je n'ai pas vu de bouquins récents sur ce sujet...
Et puis, vous pouvez prendre votre temps pour que le bouquin sorte pour la prochaine version.

Si on rêvait un peu t qu'on fasse des voeux :
Des formulaires simples, souples et puissants
Des fonctions qu'on pourrait écrire soi-même sous forme de macros,
les en-tête et les pieds de page qui suivraient la mise en page des
sections,
Un éditeur de formules mathématiques pratique.

Finalement je crois que je vais faire un bouquin sur les évolutions
souhaitées dans Word :-D


J'sais pas si c'est vendeur ! ... mais comme le VBA règle tout, suffit d'un bouquin qui mette en oeuvre les rêves !!! ;-)))

Circé

1 2