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 :

Cercle d'une matrice


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut Cercle d'une matrice
    Bonjour ,
    J'espere que vous allez m'aider pour cette fonction
    Mon probleme ?
    j'ai une matrice ( qui est une MatCable la premiere colonne ( rayon) , la deuxieme colonne (coordonnée x) , la 3 eme colonne ( coordonnée y)
    je voudrais dessiner un cercle de cette matrice , et merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function insertCableS( MatCable As Variant) As Shape
     
    Dim rC, xC, yC As Double
     
    Dim l, c As Integer: l = UBound(MatCable, 1): c = UBound(MatCable, 2)
     
     
     
    For i = 1 To l: rC = MatCable(i, 1): xC = MatCable(i, 2): yC = MatCable(i, 3)
    Set insertCableS = ActiveSheet.Shapes.AddShape(msoShapeOval, xC, yC, rC, rC)
    Next
    End Function

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Voilà le travail fait à ta place.

    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
    Sub TraceCable()
    Dim Shp As Shape
    Dim i As Long
    Dim Tb
     
    Tb = Worksheets("Feuil1").Range("A2:C7")    ' à adapter
    For i = 1 To UBound(Tb, 1)
        Set Shp = Worksheets("Feuil1").Shapes.AddShape(msoShapeOval, Tb(i, 2), Tb(i, 3), Tb(i, 1), Tb(i, 1))
        With Shp
            .Name = "Cable" & i
            .Fill.Visible = msoFalse
            '.....
        End With
        Set Shp=Nothing
    Next i
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Attention à la façon dont tu poses ta question sur le forum. Tu obtiendras plus efficacement des réponses si tu te tiens aux quelques règles du forum.
    http://club.developpez.com/regles/#LIV-H
    http://club.developpez.com/regles/#LIV-N

  4. #4
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut
    Merci infiniment , y a t il une possibilité de ramener ( diametre , coordonée du cable) à partir de la matrice non pas de la feuille

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Basiquement oui
    Retrousse les manches
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut
    Le Nom du cercle et son 'i' , n'apparait pas est ce Normal?

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    C'etait un exemple si on voulait nommer chaque cable dans un but pédagogique et ce, pour te montrer comment travailler avec la variable objet (shape) Shp
    Ce n' est pas nécessaire
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut
    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
    Function TraceCable(D As Double, MatCable As Variant, color As Variant) As Variant
    Dim Shp As Shape
    Dim coul As Long
    Dim i As Long
    Call trace_buse(D / 200, D / 200, D)
     
    MatCable = Worksheets("Feuil1").Range("A2:C12")    ' à adapter
    For i = 1 To UBound(MatCable, 1)
        Set Shp = Worksheets("Feuil1").Shapes.AddShape(msoShapeOval, MatCable(i, 2), MatCable(i, 3), MatCable(i, 1), MatCable(i, 1))
        If color = rouge Then
         coul = RGB(255, 0, 0)
       Shp.Fill.ForeColor.RGB = coul
       End If
       If color = bleu Then
       coul = RGB(0, 0, 255)
       Shp.Fill.ForeColor.RGB = coul
       End If
       If color = vert Then
       coul = RGB(0, 255, 0)
       Shp.Fill.ForeColor.RGB = coul
       End If
       If color = jaune Then
       coul = RGB(255, 255, 0)
       Shp.Fill.ForeColor.RGB = coul
       End If
       If color = noir Then
       coul = RGB(0, 0, 0)
       Shp.Fill.ForeColor.RGB = coul
       End If
       If color = blanc Then
       coul = RGB(255, 255, 255)
       Shp.Fill.ForeColor.RGB = coul
       End If
    Next i
    End Function
    moon probleme quand j'appelle la fonction par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub testeury()
    Call TraceCable(200, MatCable, noir)
    End Sub
    ca me donne toujours la derniere couleur blanche

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Que contient les variable bleu, rouge, vert, noir...etx

    As tu mis en haut du Module ..
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut
    Oui j'ai mis Option explicite
    quand j'appelle la fonction par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub testeury()
    Call TraceCable(200, MatCable, noir)
    End Sub
    à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If color = noir Then
       coul = RGB(0, 0, 0)
       Shp.Fill.ForeColor.RGB = coul
       End If
    ça me donne le dérnier If ( ça veut dire la couleur Blanche)

  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Que contient la variable noir?

    Et où elle est définie?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function TraceCable(D As Double, MatCable As Variant, color As Variant)

    Color prends a chaque fois une couleur non?

  13. #13
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu as une variable que tu as nommé noir

    Qu'est ce qu'elle représente?

    Si tu sous entends que si tu écris noir vba va l'interpréter comme la couleur noire alors je te dirai: Oh mon Dieu!
    Tu crois que vba comprendra le français?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par mercatog Voir le message
    Tu crois que vba comprendra le français?
    Je ne suis même pas sûr que lui-même ne comprenne le français.

    Cela faut bien une semaine et demie qu'il revient avec sa fonction à rallonge, toujours boguée à un endroit différent, qu'il devait remettre, il y a deux lundis. Il n'a jamais été foutu de répondre à la question de c'est quoi le but de tout cela ? (Cela fait qu'aucun répondeur présent (toi) ou passé (moi, Philippe Tulliez, unparia, Joe.levrai, Jean-Phipippe André et probablement d'autres que j'oublie (toutes mes excuses)) répondent sans savoir si son approche a la moindre chance s'être la bonne.

    Et puis moi, on m'a toujours dit qu'une fonction devait retourner une valeur, ou, par extension, un ensemble de valeurs. Et que ce n'est pas fait pour faire des dessins. Donc, même s'il s'en sacre, cela a toutes les apparences qu'il est dans le champ.

    Il devrait demander un remboursement à son école de broche-à-foin qui l'a envoyé dans un stage où il doit connaître VBA, sans le lui avoir enseigné.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  15. #15
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut
    Méchanceté gratuite.

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub testeury()
    Call TraceCable(200, MatCable, "noir")
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If color = "noir" Then
       coul = RGB(0, 0, 0)
       Shp.Fill.ForeColor.RGB = coul
       End If
    Cela dit, appeler "color" une variable ou un paramètre, c'est vraiment chercher les ennuis...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Méchanceté gratuite.
    Beaucoup de choses sont gratuites aujourd'hui, y compris certains petits mensonges et boniments (bien qu'ils n'aient, tu le vois, pas été "payants").
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  18. #18
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par xomus Voir le message
    Méchanceté gratuite.
    Commence donc par prouver qu'il y a des faussetés dans cette supposée méchanceté.

    "Aide-toi et le Ciel t'aidera"

    Tu as un code mal foutu, emprisonné dans une fonction qui n'est pas faite pour dessiner sur une feuille ou n'importe où ailleurs et tu refuses de faire le minimum d'efforts pour faciliter la vie de ceux qui essaient de te répondre. Tu risques de t'attirer les foudres de la Direction du forum pour l'abus de "up", parce que personne n'est obligé de répondre...
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  19. #19
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 253
    Points
    34 253
    Par défaut
    Bonjour,

    a-t-on pu avancer sur ce sujet qui semble s'eterniser un peu pour pas grand chose ?

    Que valent tes variables noir, rouge et compagnie ?

    As-tu pris le temps et l'energie necessaire pour faire des essais a partir de ce que Menhir t'a propose par exemple ?

    Nous donnons des pistes pour pecher correctement, mais on ne pechera pas pour toi =]
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  20. #20
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2017
    Messages : 35
    Points : 4
    Points
    4
    Par défaut coup de main pour matrice
    Bonjour,
    Je voudrais mettre un cercle de 0 ( pour la matrice cable) dans une matrice buse ,
    voici le code
    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
    Public Function InsertionCables(matBuse As Variant, MatCable As Variant) As Variant
     
    lb = UBound(matBuse, 1): cb = UBound(matBuse, 2):  lc = UBound(MatCable, 1): cc = UBound(MatCable, 2)
     
    Dim matBuse2 As Variant: matBuse2 = matBuse
     
    'ReDim matBuse(1 To lb, 1 To cb) As Integer:   ReDim MatCable(1 To lc, 1 To cc) As Integer
    check = "no"
    For i = 1 To lb: For j = 1 To cb
     
            If i - Val(lc / 2) > 0 And j - Val(lc / 2) > 0 And i + Val(lc / 2) < lb And j + Val(lc / 2) < lb Then
     
                      For k = 1 To Val(lc / 2): For l = 1 To Val(lc / 2)
     
                      If matBuse(i, j) = 1 And matBuse(i - k, j - l) = 1 And matBuse(i + k, j + l) = 1 And matBuse(i - k, j + l) = 1 And matBuse(i + k, j - l) = 1 Then check = "ok" Else: check = "no"
     
                      If check <> "ok" Then Exit For: Exit For
     
                     Next l: Next k
             End If
     
    'MsgBox check
    If check = "ok" Then
     
           For k = 1 To Val(lc / 2): For l = 1 To Val(lc / 2)
           If i - Val(lc / 2) > 0 And j - Val(lc / 2) > 0 And i + Val(lc / 2) < lb And j + Val(lc / 2) < lb Then
           matBuse2(i - k, j - l) = 0: matBuse2(i + k, j + l) = 0: matBuse2(i - k, j + l) = 0: matBuse2(i + k, j - l) = 0:
           End If
           Next l: Next k
     
    Exit For: Exit For
     
    End If
     
    Next j: Next i
     InsertionCables = matBuse2
    End Function
    et voici pour affSub test_insertion()
    Dim MC, MB, MB2 As Variant

    MC = mat_cercle(mat_Carré(5, 1))
    MB = mat_cercle(mat_Carré(30, 1))



    MB2 = InsertionCables(MB, MC)

    affichResult (MB2)

    End Sub
    icher
    et le resultat le voici
    Nom : capturet.PNG
Affichages : 102
Taille : 16,9 Ko

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2012, 21h02
  2. comment parcourir une matrice en cercle ?
    Par info3licen dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/05/2010, 19h38
  3. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 22h03
  4. Recherche des coefficients d'une matrice 3x3
    Par colorid dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/11/2004, 17h52
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 01h42

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