Détection formes

Bonjour,

Je cherche à détecter les 2 formes en blanc, enregistrées sous le même nom par le mode grouper.

image

Pourquoi la détection de la 2éme forme bug ? (macro en module1)

Merci

23forum.xlsm (48.27 Ko)

Bonjour,

Pour ma part la macro liée à la forme blanche n'était pas celle du workbook présent, mais celle d'un autre fichier sur votre PC. C'est pourquoi l'exécution était impossible. Lors de l'assignation des macros, sélectionnez toujours "Dans ce classeur" et non pas "Dans tous les classeurs ouverts" pour éviter ce genre de désagréments.

Par contre en la reliant à la macro "principale", j'ai une erreur au niveau du label "MAJ", car la valeur de "ShapeName" est mal assignée, les chaines "dp" et "cr" étant vides, le nom ne correspond à rien.

Si c'est cela votre problème alors réexécuter votre code pas à pas avec F8 pour comprendre d'ou provient l'erreur d'assignation de vos variables (pourquoi sont-elles vides ?).

Par curiosité j'ai explosé le groupe4, et la macro plantait alors que selon moi on est dans le meme cas que la forme en blanc...

Bonjour Saboh,

Merci pour la détection de l'erreur sur la mauvaise affectation de la macro.

Mais j'ai pas d'erreur aprés correction, la macro reste sur la détection de la 1ére forme.

Elle détecte pas la 2éme forme.

image

Qu'entendez-vous par "détection de forme" ? si vous assignez la macro à la forme alors elle s'active lors du clic sur ladite forme. Sinon je ne comprends pas, si la macro se lance et plante c'est un autre problème.

Quand je clique sur la seconde forme, le message des infos sur la 1ère forme apparait.

image image

Est-ce le résultat attendu ?

image

Oui bravo c'est bien çà. Comment tu as fait ?

Si je nomme la grosse forme Dpt99Cir2, j'arrive à ce résultat.

carte

Mais il faut que je colore les 2 parties (L'Amérique centrale)

Désolé j'avais pas mal édité ton code mais je n'ai pas sauvegardé... Je ne sais plus.

De manière générale, essaie de le simplifier. Tes conditions complexes et tes variables accédées de manière non constante (une fois tu fais appel à une variable que tu crées, une fois tu la retrouves via application.caller...) ne t'aident pas et rendent la relecture très difficile.

Essaie d'établir un pattern, par exemple :

1. je veux retrouver le nom de ma forme

2. je veux lui changer sa couleur

3. je veux retrouver la liste de députés correspondants

4. ...

Ensuite tu crées un sub/function pour chacune de ces taches bien définies. Tu peux leur donner des paramètres afin qu'elles s'adaptent à tous les cas, par exemple le nom de la forme.

Et ensuite dans ton sub principal tu appelles ces fonctions dans l'ordre de ton choix.

Cela te permet de tester ton code morceau par morceau, de décomposer ce qui "travaille ensemble" de ce qui est indépendant, et au final tu vas te rendre compte que tu as beaucoup de tests et de répétitions inutiles.

Ce sera plus clair à lire, à maintenir et à déboguer.

Un point très positif ton code est bien commenté, et ils aident vraiment à comprendre ce que tu veux faire. Garde-les !

Maintenant si tu as besoin d'aide ou d'autres conseils, n'hésite pas, mais prend le temps de vraiment spécifier ta demande. "Ca ne marche pas" ou "parfois ca bugue" sans que l'on sache le pourquoi du comment ne permet pas de te fournir une réponse satisfaisante. Toujours donner un contexte, une description du fonctionnement souhaité et des résultats attendus, pour chaque cas si il y a des conditions, et enfin l'endroit ou ca bloque.

:)

Bonjour,

Désolé j'avais pas mal édité ton code mais je n'ai pas sauvegardé... Je ne sais plus.

Le fichier est toujours accessible, qu'est-ce que tu me racontes ?

Je ne comprends pas ce que fais exactement le code, mais apparemment toi non plus puisque tu ne peux m'aider.

Par exemple quand je nomme les 2 formes par "Dpt99Cir2, il n'éxécute pas les conditions de la partie ou il y a shGpe2() = Array("Dpt99Cir2,Dpt99Cir8").

A noter que le code fonctionne bien sur la métropole

Cdt

effectivement j'avais modifié cette partie du code qui est erronée.

Array("Dpt99Cir2,Dpt99Cir8") ' ====> [0] : "Dpt99Cir2,Dpt99Cir8"

' a remplacer par

Array("Dpt99Cir2","Dpt99Cir8") ' ====> [0] : "Dpt99Cir2" , [1] : "Dpt99Cir8"

Pour le reste, je parlais du fichier que j'avais modifié sur mon pc. Enfin, comment peux tu présenter un code que tu ne comprends pas

Bonjour à tous,

Basé sur le fichier en début de fil :

Une recette secrète :

- En exemple, l'Amérique Centrale et du Sud

- Renommer une forme dont le nom sera sous ce format : le numéro du département, un tiret, le numéro de la circonscription, un tiret, un chiffre pour avoir une forme à nom unique.
- - pour l'exemple, 1re forme : 99-2-1
- - la 2e forme sera : 99-2-2
- - grouper ces deux formes sous son nom : Dpt99Cir2
-- dernière manipulation : clic droit sur la forme, affecter une macro : principale

En espérant un succès équivalent sur vos merveilleuses machines.

Bizz

Il y avait effectivement une erreur simple dans les " " , même pas vu dans le forum.

Merci

Bonjour Trucky93, le fil, le forum,

Je ne sais pas si tu as trouvé une solution viable.

Dans la négative, je joins une suggestion.

J'ai repris le fichier de l'autre fil et j'ai modifié un peu la mécanique des noms.

16forum1-v02.zip (1.28 Mo)

Bizz

Rechercher des sujets similaires à "detection formes"