IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remise à zéro de la numérotation automatique des objets dessins d'Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut Remise à zéro de la numérotation automatique des objets dessins d'Excel
    Bonjour à tous et bonne année

    J'ai un petit souci que j'ai bien du mal à résoudre... J'ai créé un outil qui pour des raisons de convivialité et de simplicité d'utilisation affiche les données sous forme de dessin. Ce dessin ne pouvant pas être représenté sous forme de graphique (c'est une poutre avec des appuis variables, des forces, des couples et tout plein d'autres joyeusetés pour tout vous dire), il est généré au moyen d'objets dessins d'Office, à savoir ligne, cercle et de manière générale polyligne.

    Seulement à chaque fois que l'utilisateur change une donnée, le dessin est regénéré afin de toujours correspondre à ce que l'on écrit. La regénération efface les formes précédentes et en recrée de nouveau (pas le choix, vu qu'il peut y avoir théoriquement une infinité de formes à dessiner). Jusque là tout va bien, c'est très beau et très rapide (on ne voit rien à l'écran), là où le bât blesse (enfin pas encore mais vaut mieux prévoir), c'est sur la numérotation automatique des formes par Excel.

    Lorsqu'une forme est créée, Excel lui attribue un numéro automatique incrémenté à chaque nouvelle création, bien entendu je change ce nom automatique pour chaque forme créée, mais ce dont j'ai peur c'est qu'un jour Excel me dise qu'il ne peut plus créer d'objet car le numéro associé est trop grand. J'en suis actuellement au numéro 36789, et je ne suis pas sûr qu'Excel puisse afficher "Rectangle 1000000"! J'ai l'impression que cette numérotation est attachée à la page concernée et j'aimerais pouvoir la remettre à zéro par exemple à chaque ouverture de classeur.

    Merci à ceux qui auront eu le courage de me lire et encore plus à ceux qui pourront me répondre

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    lorsque tu crées une shape, tu peux la nommer, ce qui évite qu'Excel la nomme tout seul :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 98.25, 191.25, _ 213.75, 135.75).Name = "MonRectangle"
    ActiveSheet.Shapes("MonRectangle").Top = 3
    J'espère que cela va t'aider.

  3. #3
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Vi vi je suis bien d'accord et c'est ce que je fais... Mais pour me faciliter la vie, je crée plutôt des variables objets, qui me servent de support pour la suite de mon code. Ci-dessous un très court extrait illustrant mes propos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set formeActive_sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, xDessinOr_d - dimAppuis_d / 2, yDessinOr_d - 2 * dimAppuis_d, dimAppuis_d / 2, 4 * dimAppuis_d)
            formeActive_sh.Fill.Patterned msoPatternWideUpwardDiagonal
            formeActive_sh.Name = CG_EffacerSH & "Encastrement1"
    Alors effectivement peut être qu'en mettant le .name direct Excel n'y verrait que du feu, seulement d'une part, ça ne me faciliterait vraiement pas la vie pour la suite (ma variable objet me semble plus élégante et plus facile à changer qu'une chaîne texte, sachant que j'ai un bon paquet de formes à créer), et d'autre part je suis pas du tout sûr qu'Excel n'incrémente pas son compteur en interne... Ben voilà c'est confirmé je viens de tester, Excel incrémente bien en interne, ce qui risque à terme de me poser le même problème.

    Je te remercie pour ta piste, mais malheureusement elle ne vas pas régler le problème, il faudrait vraiment que j'arrive à remettre ce !?/*@# de compteur à 1 à chaque ouverture du classeur...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    En fait, je crois que je ne comprends pas bien.

    Si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim shp As Shape, str As String, a As Integer
    str = "Rectangle"
     
    For a = 1 To 10
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, 285.75, 82.5, 186.75, 180#).Name = str & a
    Next a
            For Each shp In ActiveSheet.Shapes
                shp.Delete
            Next
    End Sub
    Et que je consulte dans "Exécution" le nom de chaque shp au moment ou je la détruit, je retrouve bien toujours "Rectangle1" pour le premier et ainsi de suite jusqu'à "Rectangle10" pour le dernier, même si je fais tourner le programme 10 fois de suite.

  5. #5
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Ah...

    Ben moi justement ça ne marche pas J'ai changé tous les noms des formes stables sur ma feuille (qui ne sont jamais effacées s'entend), mais si je dessine un bête rectangle manuellement, le numéro associé sera dans les 36000 (en ce moment)... Je vais essayer de tester. Au pire je transférerais toute l'interface de ma page sur une page vierge, pour repartir avec un compteur neuf, en espérant que tout se passera aussi bien que chez toi

    Ceci dit si qqun connaît la réponse exacte au problème (remise à zéro du compteur) ça m'intéresse quand même.

    Merci du temps que tu as pris pour me répondre House

    EDIT:

    Lol je viens de tester ton bout de code, et en fait c'est normal qu'à chaque fois tu recommences à 1, c'est toi qui change le nom de l'objet!!

    Essaie de faire la même manip mais sans changer le nom des objets :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub fdsf()
        Dim shp As Shape,  a As Integer
     
        For a = 1 To 10
            ActiveSheet.Shapes.AddShape msoShapeRectangle, 285.75, 82.5, 186.75, 180#
        Next a
     
    End Sub
    Sub sdgsf()
     
        For Each shp In ActiveSheet.Shapes
            shp.Delete
        Next
     
    End Sub
    Une procédure pour créer et l'autre pour détruire. Sur une page vierge, à la première exécution les numéros iront de 1 à 10. Si tu supprimes tout et que tu recrées, les numéros iront de 11 à 20! Moi c'est ce problème là qui me dérange. Après effectivement tu peux changer manuellement le nom comme tu veux, mais Excel continue à incrémenter en interne un compteur, et j'ai peur qu'en dépassant une certaine valeur (par exemple 1000000 d'objets créés), il n'y ai des erreurs...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    ... Evidemment, c'est moi qui donne le nom aux rectangles !
    C'est le but. Afin qu'Excel ne le fasse pas lui même de facon incontrôlée.
    Comme ca, pas la peine de 'remettre a zéro' quoi que ce soit : tu crée en nommant et tu détruis ensuite.

  7. #7
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    lol vi j'ai bien compris

    Mais même comme ça, le numéro est incrémenté en interne, effectivement tu réaffecte direct un nom qui te va bien, mais le numéro automatique associé à la forme est quand même incrémenté en interne par Excel (je t'expliquais juste comme le vérifiais ci-dessus). Donc même si la réaffectation de nom est directe, j'ai peur que ça ne change rien au problème, c'est pas parce qu'on ne voit pas le numéro incrémenté que cela ne posera pas de problèmes!

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Points : 164
    Points
    164
    Par défaut
    Tu as fait un test avec une gigantesque boucle pour voir jusqu'ou l'incrémentation se fait (vu que tu appréhendes un plantage) ?

  9. #9
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Tiens c'est une bonne idée ça, je vais essayer et je donnerais le résultat.
    C'est vrai que si ça se trouve je m'inquiète pour rien

    Edit1 : Arrivé à 5 000 000 de shapes toujours pas d'erreur... Finalement je m'inquiète peut être pour rien!
    Je vais laisser tourner encore un peu pour voir.

    Je ne met pas résolu car je suis sûr qu'il doit y avoir une commande super simple pour remettre à zéro ce foutu compteur, et j'aimerais bien la connaître

Discussions similaires

  1. [ODBC] Remise à zéro de la numérotation automatique
    Par drogba72 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/02/2009, 14h37
  2. Position "automatique" des objets
    Par pwfsic dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/06/2007, 12h59
  3. Formulaire numérotation automatique des lignes
    Par tomelo59 dans le forum IHM
    Réponses: 2
    Dernier message: 28/11/2006, 19h47
  4. Numérotation automatique des résultats d'une requête
    Par Nicola dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/07/2006, 19h57
  5. [JTable] Numérotation automatique des lignes...
    Par lilou77 dans le forum Composants
    Réponses: 2
    Dernier message: 20/12/2005, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo