UserForm et récupération valeur entrée

Bonjour à toutes et à tous,

Je me suis lancé dans les UserForm mais étant donné le fait que je sois toujours en mode découverte, je bloque.

J'ai besoin de récupération des dates, deux plus précisément, qui me permettent de définir une plage pour du tri.

Mon soucis est que je n'arrive pas à stocker ces valeurs dans des variables de manière à les utiliser dans d'autres modules

Voici le bout de code concernant le UserForm :

Public Date_D As Date
Public Date_F As Date

Public Sub date_entree_text_Change()
    'On met un contrôle pour s'assurer du format de la date saisie
    If IsDate(date_entree_text.Value) Then
            Label_erreur1.Visible = False
            Date_D = date_entree_text.Value
        Else
            Label_erreur1.Visible = True
        End If

End Sub

Public Sub Date_fin_text_Change()
    'On met un contrôle pour s'assurer du format de la date saisie
    If IsDate(Date_fin_text.Value) Then
            Label_Erreur2.Visible = False
            Date_F = Date_fin_text.Value
        Else
            Label_Erreur2.Visible = True
        End If

End Sub

Public Sub Ok_date_button_Click()
    MsgBox Date_D
    MsgBow Date_F
    Unload Me
End Sub

Les deux MsgBox de fin sont là pour tester les valeurs retournées mais même ça, ça ne marche pas.

J'avoue que j'ai un peu le cerveau en bouilli à force de traficoter à gauche et à droite sur le net.

Je vous remercie pour votre aide.

Bonjour

Après un rapide test on récupère bien les dates dans les MsgBox

Au fait une petite erreur dans ta macro Ok_date_button_Click

Public Sub Ok_date_button_Click()
    MsgBox Date_D
    MsgBoxDate_F
    Unload Me
End Sub

Si le problème persiste ton fichier va devenir indispensable

Ah punaise, le "w"...

Je commençais à devenir un peu pec...

Bon, ça je sais donc que ça fonctionne.

Maintenant si je veux me servir de ces variables par exemple dans la ligne suivante :

Selection.FormulaArray = _
        "=SUM((Sheets1!R2C2:R65535C2>=DATEVALUE(Date_D))*(Sheets1!R2C2:R65535C2<=DATEVALUE(Date_F))*(Sheets1!R2C3:R65535C3))"

Est-ce que j'ai la bonne syntaxe ? J'ai un doute sur le paramètre à rentrer après DATEVALUE. Enfin plutôt la manière de lui donner la variable.

Merci pour ton aide Jurançonnaise.

Bonjour

Essayes

Selection.FormulaArray = _
        "=SUM((Feuil1!R2C2:R65535C2>=DATEVALUE(""" & Date_D & """))*(Feuil1!R2C2:R65535C2<=DATEVALUE(""" & Date_F & """))*(Feuil1!R2C3:R65535C3))"

Bonjour Banzaï64,

à nouveau merci pour la correction de syntaxe.

Ceci dit, cela ne marche pas et j'ai pu identifier la cause de mon problème.

En fait les variables ne persistent pas d'un script sur l'autre.

J'avais cru lire qu'en les déclarants en Public, elles étaient accessibles depuis tous les modules.

Quelqu'un infirmer ou confirmer cette info ?

Pour vous donner une idée du code, j'ai donc mon userform qui fonctionne bien.

Je l'appelle dans un autre module comme suit

Public Sub Remplissage_Recup()
'
' Récupération automatique des valeurs présentes dans les onglets supports
'
    'Nettoyage de l'onglet "Recup"
    Sheets("Recup").Activate
    Cells.Select
    Selection.EntireRow.Delete
        With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
        .ColumnWidth = 35
    End With

    ' Grâce au UserForm, on vient entrée les dates sur lesquelles on souhaite agir
    Saisie_date.Show '===> Le UserForm est ici 

    'Test variable
     MsgBox Date_D

' Temps d'appel

    Sheets("Recup").Activate
    Range("A1").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0
    End With
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Temps appel"
    Range("A2").Select
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM"
    Selection.FormulaArray = _
        "=SUM((Sheets1!R2C2:R65535C2>=DATEVALUE(""" & Date_D & """))*(Sheets1!R2C2:R65535C2<=Sheets1(""" & Date_F & """))*(Sheets1!R2C3:R65535C3))"

End Sub    

Ou alors est-ce que celles-ci se réinitialisent en sortie du script dans lequel elles sont ?

Merci pour votre aide.

Ah punaise, c'est bien sur ce site que j'avais lu comment déclarer les variables.

En fait, ce n'est pas Public qu'il faut écrire mais Global.

Seulement voilà, j'ai l'éditeur VBA qui m'illumine d'un superbe message ...

En gros, si je comprends bien, on ne peut pas placer de variables Global dans un UserForm ?

Merci encore à ceux qui ont le savoir.

Bonjour

hubert a écrit :

En gros, si je comprends bien, on ne peut pas placer de variables Global dans un UserForm ?

Question et réponse

Et zut...

Comment puis-je faire alors ?

Je suis obligé de venir écrire ces valeurs quelque part pour les récupérer ensuite ?

Par exemple, mon UserForm vient écrire les valeurs rentrées dans un classeur puis j'y fais référence dans ma macro ?

Ceci dit cela limite l'utilisation de cet objet, autant venir les saisir directement dans les cellules concernées.

Bonjour

Désolé je croyais que tu avais trouvé et que tu avais fait ton message pour indiquer ce que tu avais constaté

Tu déclares tes variables dans un module standard, et tous les modules auront accès à ces variables

Public Date_D As Date
Public Date_F As Date

Enlèves les du module de l'userform

Aaaaaaaaaaaah merci !!

Je me demande pourquoi je n'y ai pas pensé.

Ça mériterait presque une bouteille du château Jolys !

Rechercher des sujets similaires à "userform recuperation valeur entree"