Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/10/2011, 11h43   #1
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
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
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 12/10/2011, 20h41   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
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 :
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é.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/10/2011, 15h45   #3
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
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....
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h14   #4
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Citation:
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é.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/10/2011, 11h16   #5
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
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 :
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
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 07h40   #6
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

A mettre dans le module de la form sur l'évènement Change du combobox Cb1 :
Code :
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é.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web