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 :

Supprimer l'incrément dans msoShapeRectangle() [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 46
    Par défaut Supprimer l'incrément dans msoShapeRectangle()
    Bonjour,
    dans le bout de code joint, je souhaite comprendre où intervenir pour remettre l'incrément de msoShape-xxx à zéro
    merci de votre aide
    Lam83Pièce jointe 582703Pièce jointe 582703Pièce jointe 582705

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Ici de nombreux contributeurs n'ouvrent pas les fichiers joints s'ils ne l'ont pas démandé, en particulier lorsqu'ils contiennent des macros,
    pour les raisons indiquées ici : Fichier joint dans vos discussions

    Peux-tu publier le code complet de tes macros et expliquer clairement ce qui pose problème?

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 46
    Par défaut Utilisation de msoShape
    bonjour,
    je reviens sur le debut de ma discussion.Supprimer l'incrément
    j'utilise la classe shape pour dessiné des formes dans ma feuille excel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Shapes.AddShape(msoShapeRectangle, 100, 100, 50, 15)
    le addshape incrémente un compteur et même si j'utilise la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.ShapeRange.Delete
    il faut une fermeture de mon fichier puis réouverture, pour que l'incrément revienne à zéro.
    je cherche le moyen de remettre ce compteur à zéro, sans être obligé de faire cette manip.
    d'avance, merci de votre aide.
    Lam83

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Re,

    Ce "compteur" n'a aucune utilité si tu utilises l'objet correctement, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim shp As Shape
     Set shp = Feuil1.Shapes.AddShape(msoShapeRectangle, 100, 100, 50, 15)
     shp.Name = "MonRectangle 3258"
     ' ...
     shp.Delete
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 46
    Par défaut
    merci pour votre réponse,
    mais ce compteur est peut être inutile mais il gène dans l'exécution du code.
    en effet si on utilise le addshape dans une boucle for.. next, on peut manipuler les formes sur le feuille excel,
    mais une fois utiliser le shaperange.delete lui aussi dans une boucle pour effacer les premières formes si on relance la boucle for...next
    le compteur s'incrémente à nouveau et plante lorsqu'on veut repasser sur le shaperange.delete pour effacer les secondes formes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i=1 to 2
        addshape(rectangle)
    next
    .....
    for j=1 to 2
        selection.shapeRange.delete
    next
    je souhaiterai annulé ce compteur.

    Lam83

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Une démonstration supplémentaire qu'avec VBA il faut éviter d'utiliser les objets actifs (comme Selection) !
    La solution est bien celle que je t'ai donné : agir sur l'objet sans le sélectionner.

    Pour une solution plus précise il faudrait que tu publies intégralité de ton code.

  7. #7
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 244
    Par défaut
    hello,
    Lam83 si tu fais seulement cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set form = Feuil1.Shapes.AddShape(msoShapeRectangle, 100, ht, 50, 15)
    tu ne maîtrises pas le nom qu'aura la forme, c'est VBA qui décide
    par contre si tu renommes la forme juste après l'avoir créé comme le fait Patrice, là tu maîtrise le nom exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub rectangle2()Dim i, ht As Integer
    ht = 100
    For i = 1 To 2
       Set form = Feuil1.Shapes.AddShape(msoShapeRectangle, 100, ht, 50, 15)
       form.Name = "Rectangle_" & i
       ht = ht + 25
    Next
    End Sub
    tes rectangles s'appelleront Rectangle_1 et Rectangle_2
    et alors là rien de plus simple pour les supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub eraseRectangle()Dim i As Integer
    For i = 1 To 2
    Feuil1.Shapes("Rectangle_" & i).Delete
    Next
    End Sub
    Ami calmant, J.P

  8. #8
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 46
    Par défaut
    bonjour à tous,
    merci beaucoup pour votre aide.
    je viens de tester vos conseils et bingo, ça fonctionne comme je le souhaite.
    je n'avais pas vu la transformation pour gérer le nom qui était imposé par VBA.
    encore merci et bonne journée malgré le confinement.. Grrr!!
    A+
    Lam83

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 14h52
  3. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  4. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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