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 :

dessiner et placer automatiquement des formes sur une feuille


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
    Développeur .NET
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut dessiner et placer automatiquement des formes sur une feuille
    Bonjour,
    Je possède un tableau de 4 colonnes X/Y/taille(L,l)/ID et un bouton dans ma première feuille
    Je voudrais avec un bouton, dessiner dans ma deuxième feuille une série de forme de dimension (L,l) de position X/Y avec un texte verticale correspondant à l'ID.
    ça devrait ressembler à ça
    Feuille 1
    Nom : Feuille_1.png
Affichages : 318
Taille : 4,3 Ko

    Feuille 2
    Nom : Feuille_2.png
Affichages : 310
Taille : 6,4 Ko

    Je ne sais pas combien j'aurai de ligne.
    J'en suis juste au stade de savoir si c'est faisable.

    Merci pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Aide
    Bonjour
    voici une petite solution
    sans doute le code pourra t il etre optimisé : à minima, il faudra prévoir de virer les formes sur la feuille 2 sinon une même forme superposera l'ancienne exécution de macro + il faudra executer un loop afin que la macro bascule de ligne en ligne depuis feuille 1

    Voilà le code que j'ai mis dans le fichier joint :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub Création_Forme()
    '
    ' Création_Forme Macro
    '
    Sheets("Feuil1").Select
    Dim Ma_Ligne
    Ma_Ligne = 2 'mettre le loop sur cette valeur
     
    Dim MonX, MonY, MaH, MaLa, MaCouleur
    MonX = Range("A" & Ma_Ligne).Value
    MonY = Range("B" & Ma_Ligne).Value
    MaH = Range("C" & Ma_Ligne).Value
    MaLa = Range("D" & Ma_Ligne).Value
    MaCouleur = Range("F" & Ma_Ligne).Interior.Color
            'conversion Couleur en RGB
            R = Int(MaCouleur Mod 256)
            G = Int((MaCouleur Mod 65536) / 256)
            B = Int(MaCouleur / 65536)
     
    Dim MonID As String
    MonID = Range("E" & Ma_Ligne).Value
     
        Sheets("Feuil2").Select
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 100, 100).Select
        Selection.ShapeRange.Name = "Forme_Ligne_" & Ma_Ligne
        'Selection.Name = "Forme_Ligne_" & Ma_Ligne
        Selection.ShapeRange.Height = MaH
        Selection.ShapeRange.Width = MaLa
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
            .ForeColor.RGB = RGB(R, G, B)
            .Transparency = 0
            .Solid
        End With
        Selection.ShapeRange.Line.Visible = msoFalse
        Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = MonID
        With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4). _
            ParagraphFormat
            .FirstLineIndent = 0
            .Alignment = msoAlignCenter
        End With
        With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4).Font
            .NameComplexScript = "+mn-cs"
            .NameFarEast = "+mn-ea"
            .Fill.Visible = msoTrue
            .Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
            .Fill.ForeColor.TintAndShade = 0
            .Fill.ForeColor.Brightness = 0
            .Fill.Transparency = 0
            .Fill.Solid
            .Size = 11
            .Name = "+mn-lt"
        End With
        Selection.ShapeRange.IncrementLeft MonX
        Selection.ShapeRange.IncrementTop MonY
        Sheets("Feuil1").Select
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut
    Super merci.
    J'ai pioché dans ton code ça m'a bien aidé.
    Sais-tu si on peut mettre une info-bulle sur un shape ?

    Merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Idée
    Salut
    peut être essayer avec un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .ShapeRange.AlternativeText = "Decription_Info_Bulle"

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut
    Merci pour l'info
    ça compile et ça joue sans erreur par contre l'infobulle ne fonctionne pas, ni en passant ni en cliquant sur les shapes que j'ai créé.
    Je vais fouiller sur cette lancée

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/08/2018, 16h20
  2. Réponses: 1
    Dernier message: 18/08/2017, 12h49
  3. Réponses: 0
    Dernier message: 25/09/2014, 11h05
  4. Connectivité pour délimiter des formes sur une photo
    Par romu37fr dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/06/2007, 13h28
  5. [Preferences] Sauvegarde automatique des préférences sur une vue
    Par pistache42 dans le forum Eclipse Platform
    Réponses: 10
    Dernier message: 04/12/2006, 11h32

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