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 :

Creation de forme géométrique modifiable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut Creation de forme géométrique modifiable
    Bonjour

    Je suis actuellement edans une entreprise où la matière première utilisée est le maïs .
    Ce maïs est stocké dans des silos cylindriques à fond plat et je souhaiterai modéliser cette forme sur excel à partir d'une base de donnée ( diametre, hauteur, formule de volume cylindre et cône).
    Le résultat que je souhaite obtenir est le suivant : lorsqu'on modifie les données de hauteur ou de diametre que le cylindre change de dimension et pouvoir empilé un cône sur le cylindre.
    Je ne sais pas si c'est réalisable, c'est pour ça que je demande votre aide.

    En vous remerciant

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je n'ai pas de cône à ma disposition, mais si tu acceptes un rectangle et un triangle, c'est possible.

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut
    Merci Daniel,
    J'accepte tes conseils ca c'est vrai qu'en ramenant en 2D un cylindre et un cône cela fait un rectangle et un triangle !

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai finalement utilisé des pentagones.
    Voici le code :
    1. Dans un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Base 1
    Public Silos(100), H(100) As Single, D(100) As Single
    Si tu as plus de 100 silos, ajuste en conséquence.

    Dans le module "Thisworkbook" :

    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
    Private Sub Workbook_Open()
    Dim c As Range, ResAdr As String
    With Sheets("Feuil1")
        Set c = .[A:A].Find("Silo")
        If Not c Is Nothing Then
            ResAdr = c.Address
            Do
                ctr = ctr + 1
                vars = Dims
                Silos(ctr) = c.Value
                H(ctr) = c.Offset(1, 1)
                D(ctr) = c.Offset(2, 1)
                Set c = [A:A].FindNext(c)
            Loop Until c Is Nothing Or c.Address = ResAdr
        End If
    End With
    End Sub
    Dans le module de la feuille :

    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
    Option Base 1
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Silo As String, NouvH As Single, AncH As Single, AncD As Single, NouvD As Single
        If Target <> "" And Target <> 0 And Target.Count = 1 And _
            Target.Column = 2 Then
            With Application
                If Left(Target.Offset(-1, -1), 4) = "Silo" Then
                    Silo = Target.Offset(-1, -1)
                    Set Var = ActiveSheet.Shapes(Silo)
                    AncH = .Index(H, .Match(Target.Offset(-1, -1).Value, Silos, 0))
                    NouvH = Target.Value
                    Shapes(Silo).Height = Shapes(Silo).Height * NouvH / AncH
                    H(.Match(Target.Offset(-1, -1).Value, Silos, 0)) = NouvH
                ElseIf Left(Target.Offset(-2, -1), 4) = "Silo" Then
                    Silo = Target.Offset(-2, -1)
                    AncD = .Index(H, .Match(Target.Offset(-2, -1).Value, Silos, 0))
                    NouvD = Target.Value
                    Shapes(Silo).Width = Shapes(Silo).Width * NouvD / AncD
                    H(.Match(Target.Offset(-2, -1).Value, Silos, 0)) = NouvD
                End If
            End With
        End If
    End Sub
    Je te joins un classeur exemple. Les noms des silos doiant se trouver en colonne A et commencer par "Silo".
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/12/2005, 17h20
  2. Réponses: 7
    Dernier message: 29/11/2005, 11h07
  3. [Forms 6i] Modifier un déclencheur
    Par macben dans le forum Oracle
    Réponses: 2
    Dernier message: 21/11/2005, 17h36
  4. glVertex et définition d'une forme géométrique
    Par Mastero dans le forum OpenGL
    Réponses: 1
    Dernier message: 06/12/2004, 12h44
  5. [TCanvas] peindre une forme géométrique
    Par raggadoll dans le forum C++Builder
    Réponses: 7
    Dernier message: 19/04/2004, 10h01

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