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 :

Traduction en code d'un algorithme créé sur papier


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
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Par défaut Traduction en code d'un algorithme créé sur papier
    Bonjour,

    Je crois savoir ce que je dois faire, mais je ne sais pas comment coder certaines choses, si vous pouviez m'aider à traduire, je vous en serait très reconnaissant.

    Contexte

    Userform A, Userform B et Userform C servent a recenser des informations dans des textbox (rempli ou non)
    5 textbox par Userform soit 15 Textbox

    Objectif

    Creer un "Userformfinal" qui sert a recenser les infos des trois autres userforms dans des labels. Le nombre de label s'adaptant au nombre de textbox rempli dans les autres Userform.

    Tentative

    SI
    UserformA.Textbox1 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userfomfinal.Label1 = UserformA.Textbox1.Value
    SI NON
    SI
    UserformA.Textbox2 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userformfinal.Label1 = UserformA.Textbox2.Value
    SI NON…
    …SI
    UserformC.Textbox5 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userformfinal.Label1 = UserformC.Textbox5.Value
    SI
    Userformfinal.Label1.Visible = True
    ALORS
    SI
    UserformA.Textbox2 contient du texte
    ALORS
    Userformfinal.Label2.visible = True
    Userfomfinal.Label2 = UserformA.Textbox2.Value
    SAUF si le text est déjà contenu dans Userformfinal.Label1
    SI NON
    SI
    UserformA.Textbox3 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userformfinal.Label1 = UserformA.Textbox3.Value
    SAUF si le text est déjà contenu dans Userformfinal.Label
    SI NON…
    …SI
    UserformC.Textbox5 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userformfinal.Label1 =UserformC.Textbox5.Value
    SAUF si le text est déjà contenu dans Userformfinal.Label1
    SI
    Userformfinal.Label2.Visible = True
    ALORS
    SI
    UserformA.Textbox3 contient du texte
    ALORS
    Userformfinal.Label3.visible = True
    Userfomfinal.Label3 = UserformA.Textbox2.Value
    SAUF si le text est déjà contenu dans Userformfinal.Label1 ou Userformfinal.Label2
    SI NON
    SI
    UserformA.Textbox3 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userformfinal.Label1 = UserformA.Textbox3.Value
    SAUF si le text est déjà contenu dans Userformfinal.Label1 ou Userformfinal.Label2
    SI NON…
    …SI
    UserformC.Textbox5 contient du texte
    ALORS
    Userformfinal.Label1.visible = True
    Userformfinal.Label1 =UserformC.Textbox5.Value
    SAUF si le text est déjà contenu dans Userformfinal.Label1 ou Userformfinal.Label2

    Peut être voyez vous egalement une meilleure conception.

    En esperant que vous pourrez m'aider.
    Je vous remecie d'avance.

    PULEDAD1

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Un premier jet. Le code est sur l'évènement "Click" d'un bouton (ici nommé "CommandButton1") situé sur le formulaire "Userformfinal", les troix autres formulaire devant être ouverts bien sûr mais ils peuvent être cachés (Hide) :
    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
    58
     
    Private Sub CommandButton1_Click()
     
        Dim Ctrl As Control
        Dim I As Integer
     
        For Each Ctrl In UserFormA.Controls
     
            If TypeName(Ctrl) = "TextBox" Then
     
                If Ctrl.Text <> "" Then
     
                    I = I + 1
     
                    Me.Controls("Label" & I).Visible = True
                    Me.Controls("Label" & I).Caption = Ctrl.Text
     
                End If
     
            End If
     
        Next Ctrl
     
        For Each Ctrl In UserFormB.Controls
     
            If TypeName(Ctrl) = "TextBox" Then
     
                If Ctrl.Text <> "" Then
     
                    I = I + 1
     
                    Me.Controls("Label" & I).Visible = True
                    Me.Controls("Label" & I).Caption = Ctrl.Text
     
                End If
     
            End If
     
        Next Ctrl
     
        For Each Ctrl In UserFormC.Controls
     
            If TypeName(Ctrl) = "TextBox" Then
     
                If Ctrl.Text <> "" Then
     
                    I = I + 1
     
                    Me.Controls("Label" & I).Visible = True
                    Me.Controls("Label" & I).Caption = Ctrl.Text
     
                End If
     
            End If
     
        Next Ctrl
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Par défaut
    Merci,

    Je vais eessayer cela ce week end.

    Y a t-il cependant des conditions a respecter.
    Je pense notamment au fait de numeroter les userforms, les textbox etc....

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Y a t-il cependant des conditions a respecter.
    Je pense notamment au fait de numeroter les userforms, les textbox etc....
    oui effectivement, les Labels sont numérotés de 1 à x par contre, les TextBox non mais dans ce cas, ils seront tous pris en compte, si c'est ce que tu veux pas de problème, dans le cas contraire (si certains doivent être ignorés), fais le moi savoir je modifierai en conséquence.

    Bon WE.

    Hervé.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Par défaut
    Non, pas la peine d'en ignorer,
    super ca marche, merci bcp.

    Tant que je vous ai sous la main puis-je encore vous demander qqch :

    1) J'aimerais qu'un combobox (Cb2) me propose une liste de choix differente en fonction de ce que j'ai selectionné ds un autre combobox (Cb1) Feuille source (Stockage)

    Voila ce que j'ai tenté :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox30_Afterupdate()
    If UserForm1.Cb1.Value = "DS" Then
    UserForm1.Cb2.RowSource = "Stockage!A2:A5"
    End If
    End Sub
    Mais rien ne se passe ds Cb2, peut être ne faut il pas le mettre sur Private Sub ComboBox30_Afterupdate()

    2) J'aimerai mettre une valeur par deffaut dans un textbox (une date) et faire en sorte qu'elle soit modifiable => Ca j'ai réussi.
    J'aimerais aussi qu'il soit possible de mettre un masque de saisie.
    C'est a dire que la date apparraissent ainsi : " JJ.MM.AAAA"
    qu'on puisse la modifié et qu'on ne puisse pas changer le format.


    Merci bien, pour votre réponse précédente.

    Adrien

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    A mettre dans le module de la form sur l'évènement Change du combobox Cb1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Cb1_Change()
     
        If Cb1.Value = "DS" Then
            Cb2.RowSource = "Stockage!A2:A5"
        Else
            'ou autre !!!
            Cb2.RowSource = "Stockage!B2:B5"
        End If
     
    End Sub
    Hervé.

Discussions similaires

  1. la traduction d' algorithme palindrome sur java
    Par yusuf islam dans le forum Général Java
    Réponses: 2
    Dernier message: 04/12/2009, 15h24
  2. Traduction de code Oracle vers SQL Server
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/11/2005, 23h43
  3. Traduction du code oracle vers SQL - suite
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/11/2005, 14h40
  4. [VB.NET] Traduction de code c++builder -> VbNet
    Par Tempotpo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/03/2005, 15h02
  5. Code qui ne fonctionne pas sur Mac
    Par malbaladejo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 11h08

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