Déplacement d'un bouton dans un modèle Word

nd34 Messages postés 3 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 30 août 2011 - 29 août 2011 à 13:23
nd34 Messages postés 3 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 30 août 2011 - 30 août 2011 à 09:56
Bonjour,
Je sélectionne la ligne qui contient un bouton (inlineshape) suivi de texte,
je coupe la sélection (.cut),
je descends de quelques lignes,
je colle ma sélection (.paste).
Tout se passe bien apparemment sauf que le bouton a changé de nom !?
Le nom du bouton est incrémenté !? ex: BtnTest10 -> BtnTest101
Ce qui est gênant quand on essaie d'y faire référence et notamment son code.
Y-aurait-il quelque chose à faire pour cela ?
Quand je tente de renommer le bouton, j'ai une erreur 'La commande 'Name' de l'objet x a échoué...'
Merci pour vos conseils.
Word 2003, VBA

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 août 2011 à 13:59
Salut

"inlineshape" connais pô
Pourquoi ne déplaces-tu pas les lignes qui suivent et les remttre au dessus de ta ligne ? de cette manière tu ne toucherais pas à ce bouton.
Autre piste : Essaye de faire un copier-coller, puis une suppression de l'original, pour voir ce qu'il fait.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
nd34 Messages postés 3 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 30 août 2011
29 août 2011 à 14:14
Il y a un bouton par ligne et le but est de les trier.
Le copier-coller crée forcément un nouveau nom, j'avais déjà essayé cette solution.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 août 2011 à 19:42
Autre solution : Laisse les boutons en place et gère le nom affiché dans un tableau (Caption ou Text, je ne sais plus) de correspondance, par exemple; tu vois ce que je veux dire ?
0
nd34 Messages postés 3 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 30 août 2011
30 août 2011 à 09:56
Les captions des boutons sont en fait des compteurs dynamiques alignés sur les textes qui les suivent (chaque ligne commence par un signet qui me permet de me repérer) :
Quand le bouton est à zéro, il récupère la plus haute valeurs des autres boutons auquel il ajoute 1 et se l'attribue.
Quand la bouton est > zéro, il prend la valeur zéro et décrémente tous les autres de 1.
Quand on a fini, on élimine tous les boutons à zéro et on trie les boutons par valeur du bouton.
Quand on revient, on trie les boutons par ordre initial et on ajoute les boutons zéros manquants.
Tout se passe bien 1 fois sur 4 (en moyenne) : on dirait que VB garde le nom du bouton quelque part au moment du selection.cut, du coup ,au moment du selection.paste, il en crée un nouveau.
J'ai fait une fonction qui balaie et corrige ce défaut éventuel en fin de tri mais le Selection.InlineShapes(1).OLEFormat.Object.Name = sNomBtn échoue avec l'erreur VB.
Pourquoi cela ne fonctionne-t-il pas à chaque fois ?
La référence au nom du bouton est importante à cause du code lié au bouton.

Au départ :
(btn1:0) texte A
(btn2:0) texte B
(btn3:0) texte C
(btn4:0) texte D

En fin de choix :
(btn1:2) texte A
(btn2:3) texte B
(btn3:0) texte C
(btn4:1) texte D

Disposition finale :
(btn4:1) texte D
(btn1:2) texte A
(btn2:3) texte B

Quand on revient sur les choix :
(btn1:2) texte A
(btn2:3) texte B
(btn3:0) texte C
(btn4:1) texte D
0
Rejoignez-nous