1 pièce(s) jointe(s)
Manipulation de Groupe TextBox - Shape Range
Bonjour,
Je testouille et voila mon PB,
J'ai plusieurs Zone de Text dans une feuille, des groupés et d'autre non.
Le nom pour les groupes de TextBox et les TextBox ne doit pas être modifié (important pour mes manip après).
Ma Macro détermine si dans ma feuille j'ai des TextBox ou des groupes de TexteBox et affiche leur nom dans des MsgBox.
Pour cela quant elle rencontre un groupe de TextBox elle le dégroupe pour plutard les manipuler (donc perte du groupe et de son nom) puis lis le nom des TextBox et les regroupe (donc crée un nouveau nom) et donc renomme le groupe de son ancien nom.
Ma macro quand elle rencontre des TextBox non grouper sa va.
Mais pour les groupes de TextBox : à la première rencontre elle dégroupe bien les deux TextBox et les regroupe bien avec le bon NOM
mais à la 2em rencontre ça plante ! dans le code :
Code:
Set S = Fe.Shapes.Range(Tbl).Group
avec le message du débugeur :
[Erreur Execution 1004 le groupage est désactivé pour les formes sélectionnées.]
késako ?
en gros je veux une macro qui manipule des TextBox ou Groupe de TextBox par leur NOM dans une feuille,
les grouper dégrouper, changer le texte l’intérieur d'un groupe à un membre Nommé, changer la position,
Lino
Ci-Joint mon fichier
Infos après plantage :
Après le plantage revenir sur la feuille <Model etiquette 1>
Sélectionner <ZoneText1> <ZoneText2> qui n'ont pas été regroupé suite au plantage et les grouper sous le nom <GroupeEQT>
la Macro :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
Sub Recup_Name_Group_et_sousGroup()
'
Dim Fe As Worksheet
Dim Tbl() As Variant
Dim S As Shape
Dim Sh As Shape
Dim i As Integer
Dim J As Integer
Dim oldnamegroup As String
Dim namegroupcrea As String
Set Fe = Sheets("Model etiquette 1")
For Each S In Fe.Shapes
'Si le shape fait parti d'un groupe
If S.Type = msoGroup Then
MsgBox "Nom du GROUP : <" & S.Name & ">"
oldnamegroup = S.Name
For i = 1 To S.GroupItems.Count 'boucle sur le groupe afin de récupérer les noms des différents shapes composant le groupe
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = S.GroupItems(i).Name
'MsgBox S.GroupItems(i).Name
Next i
'Dégroupe
Fe.Shapes(S.Name).Ungroup
'Parcour les différents shapes du groupe et affecte la valeur voulue au shape (OptionButton et ChekBox) si tant est qu'il est une proriété "Value"
For i = 1 To UBound(Tbl)
On Error Resume Next 'si pas de propriété "Value"
MsgBox "Nom du Sous GROUP : <" & Fe.Shapes(Tbl(i)).Name & ">"
Next i
'annule la gestion des erreurs
On Error GoTo 0
'Reconstitue le groupe AVEC le Bon NOM !!!
Set S = Fe.Shapes.Range(Tbl).Group ' Message du debugeur : ERREUR 1004 le groupage est déactivé pour les formes sélectionnées
MsgBox "Nom Voulu : <" & oldnamegroup & ">" & "Nom Temporaire : <" & S.Name & ">"
S.Name = oldnamegroup
oldnamegroup = ""
namegroupcrea = ""
Erase Tbl 'Vide le tableau
J = 0
ElseIf S.Type = msoTextBox Then
MsgBox "NOT A GROUP : " & S.Name & " Type : <" & S.Type & ">"
Else
MsgBox "NOT A GROUP OR TEXTBOX ! What is it ? " & S.Name & " Type : <" & S.Type & ">"
End If
Next
End Sub |