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.

image

Merci de votre aide

23forum.zip (1.28 Mo)

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 ?

22forum1.zip (1.28 Mo)

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é.

image

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) Then

S'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).ParentGroup

S'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.

19forum2.zip (1.38 Mo)

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 If

Si 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 à tous,

Je reviens sur le sujet: Pour faire simple, je ne comprends pourquoi il parcours un array ou la forme Dpt96Cir1 ne figure pas en tant qu'image groupée,

image

, avant de buguer ici :

130452 66860174b3b0f750758394

Merci de votre aide.

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 k

S'il est absent, il sera géré par la section : ' images non groupées

Répéter pour "shGpe2()"

Bizz quand même

Rechercher des sujets similaires à "coder absence image groupee"