Coder l'absence d'une image non groupée
Bonjour à tous,
J'ai des shapes de départements ou plutôt de circonscriptions qui sont parfois regroupées avec d'autres pour faire une circo, d'autres non.
Je fais une macro qui colore une circo et me donne ses infos, mais j'ai un souci pour identifier une image non groupée par rapport à une image groupée.
Dans le fichier joint, en onglet "Carte", çà fonctionne si vous cliquez sur une circo de la Corse ou des DOM TOM parce que chaque circo a une images groupe,
mais pour la 1ere circo des français établis hors de France, qui n'est pas groupée, çà bug. Il me manque le code pour dire qu'il n'y a pas d'image groupée.
Merci de votre aide
Bonjour Trucky93,
Observation :
Exemple testé : Français établis hors de France (6ième).
Si une toute petite forme avec fond blanc et bordure blanche (donc invisible) est ajoutée très près de l'objet non groupé. Puis, que cette nouvelle forme soit groupée à l'objet, on obtient un groupe.
Une fois ces formes groupées, glisser la petite nouvelle forme sous la forme principale et la plaçant en arrière-plan.
Est-ce acceptable ?
Bizz
Bonjour Bizarre,
Non, pas invisible.
Aucun rapport avec ma demande.
dsl
Bonjour Trucky93,
Examine le comportement de ce fichier.
Le clic sur les zones actives fonctionne partout, l'information de la zone sélectionnée s'affiche et l'info est bonne.
Le souci provenait du nom de certains groupes ou de certaines zones, ou encore du contenu de certains groupes.
La zone sélectionnée bleuit.
Lors de l'investigation, j'ai ajouté des noms dans les "Array". Après le dépannage des noms des objets, je ne sais si ces noms ajoutés restent inutiles.
Est-ce que cela convient ?
Bizz
Hello Bizarre
Bon çà fonctionne bien sur toutes les formes; dommage qu'Excel soit lent pendant 3 secondes aprés l'ok sur le message d'infos.
Mais je comprends pas tout. tu as apparemment ajouter une forme dans les formes seules pour avoir une image groupée, pour contourner le problème que j'ai annoncé.
Et j'arrive pas à l'enlever pour voir si la macro fonctionnait en forme unique.
Merci en tout cas
Bonjour Trucky93,
Et j'arrive pas à l'enlever pour voir si la macro fonctionnait en forme unique.
Rendu à l'étape de l'image jointe dans le message précédent, clique au côté des objets, cela désélectionne les deux objets, clique droit sur l'objet principal et glisse-le un peu de côté, suffisamment pour dégager l'objet en dessous. Passe le curseur de souris sur l'emplacement de l'objet du dessous, le curseur de souris devrait changer pour une croix. Là, clique droit ou gauche afin de sélectionner l'objet du dessous pour le déplacer ou le supprimer.
Bizz
Bonjour Trucky93,
J'ai trouvé comment gérer un shape qui n'est pas dans un groupe.
Il faut que le nom du shape (exemple : DPT96Cir6) ne soit pas dans les Array "shGpe1()" ou "shGpe2()".
Puis boucler une première fois sur les Arrays afin de tester si ce nom est présent dans les Array Groupe.
For k = 0 To UBound(shGpe2)
If ws2.Shapes(Application.Caller).Name = shGpe2(k) ThenS'il est présent, la 2e boucle, imbriquée dans la 1re, fonctionnera ...
For i = 0 To UBound(shGpe2)
If ws2.Shapes(Application.Caller).ParentGroup.Name = shGpe2(i) Then
Set DCsh = ws2.Shapes(Application.Caller).ParentGroupS'il est absent, il sera géré par la section : ' images non groupées
Je te retourne bientôt le fichier d'origine corrigé avec les départements fonctionnels.
Bizz
Attends Zarbi
J'ai rajouté une partie des circos de la métropole dans la carte parce que la Corse était un mauvais exemple avec ses 3 chiffres 991 et 992 pour remplacer 2A et 2B.
Et ces dépts normaux fonctionnent bien, c'est cette partie de la macro qui les concerne.
' images non groupées
'dépts à 3 chiffres image non groupée
If IsNumeric(Mid(Application.Caller, 4, 3)) Then
dp = Mid(Application.Caller, 4, 3)
cr = Mid(Application.Caller, 10)
'dépts 10 à 97 image non groupée
ElseIf IsNumeric(Mid(Application.Caller, 4, 2)) Then
dp = Mid(Application.Caller, 4, 2)
cr = Mid(Application.Caller, 9)
'dépts 1 à 9 image non groupée
ElseIf IsNumeric(Mid(Application.Caller, 4, 1)) Then
dp = Mid(Application.Caller, 4, 1)
cr = Mid(Application.Caller, 8)
End IfSi tu pouvais éviter mettre ton Bizz en signature, çà fait louche.
Merci
Bonjour Trucky93,
Si tu pouvais éviter mettre ton Bizz en signature, çà fait louche.
Merci
Avec un grand plasir.
Bonne continuité
Bizz
Bonjour Trucky93,
Je suis indulgent :
Tel qu'indiqué dans un post plus haut, pour les objets sans .ParentGroup , boucler une première fois sur les "ArraysParenetGroup" afin de tester si ce nom est présent.
'images groupées dept 2 chiffres
shGpe1() = Array("Dpt96Cir2", "Dpt96Cir3", "Dpt96Cir5", "Dpt96Cir8", "Dpt96Cir10", "Dpt96Cir11", "Dpt97Cir1", "Dpt986Cir1", "Dpt988Cir1")
'si image groupée (nommée groupe x)
For k = 0 To UBound(shGpe1)
If ws2.Shapes(Application.Caller).Name = shGpe1(k) Then ' boucle sur le nom seulement
For i = 0 To UBound(shGpe1)
If ws2.Shapes(Application.Caller).ParentGroup.Name = shGpe1(i) Then ' boucle sur ParentGroup.name
...
...
...
end if
next i
End if
next kS'il est absent, il sera géré par la section : ' images non groupées
Répéter pour "shGpe2()"
Bizz quand même

