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 :

Problème de variable et userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Problème de variable et userform
    Bonjour,
    j'ai un problème mais avant tout je vais vous expliquer ce que j'ai fait.

    Deux pages dans mon classeur :

    -Données (ce sont les données qui me permets d'alimenter mes liste déroulante)
    -Suivi (colonne : DATE, Nom transporteur, Nom du salarié, type de NC, Détail de la NC).
    Sur cette même feuille nous avons un bouton ajouter. Lorsque le bouton est cliquer nous ouvrons la userform 2. Sur cette userform2, nous retrouver des combobox et des textbox permettant de compléter la première ligne vide du tableau.
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Sub CommandButton1_Click()
     
    Dim c As Integer
     
    c = 7
     
    While Worksheets("Suivi NC").Cells(c, 4) <> ""
            c = 1 + c
    Wend
     
     
    If ComboBox1.Value <> "" Then
        If ComboBox2.Value <> "" Then
           If ComboBox3.Value <> "" Then
                If TextBox1.Value <> "" Then
                    If DTPicker1 <> "" Then
                        Sheets("Suivi NC").Unprotect
                        Worksheets("Suivi NC").Cells(c, 5).Value = ComboBox1.Value
                        Worksheets("Suivi NC").Cells(c, 6).Value = ComboBox2.Value
                        Worksheets("Suivi NC").Cells(c, 4).Value = ComboBox3.Value
                        Worksheets("Suivi NC").Cells(c, 7).Value = TextBox1.Value
                        Worksheets("Suivi NC").Cells(c, 8).Value = TextBox2.Value
                        Worksheets("Suivi NC").Cells(c, 3).Value = DTPicker1.Value
                        Sheets("Suivi NC").Protect
                    Else
                        MsgBox "Merci de bien vouloir écrire la date de la NC", vbOKOnly + vbInformation, "ATTENTION : Description de la NC non renseigné"
                    End If
                Else
                    MsgBox "Merci de bien vouloir écrire la description de la NC", vbOKOnly + vbInformation, "ATTENTION : Description de la NC non renseigné"
                End If
            Else
                MsgBox "Merci de bien vouloir indiquer le nom du Transporteur", vbOKOnly + vbInformation, "ATTENTION : Nom du Transporteur non renseigné"
            End If
        Else
            MsgBox "Merci de bien vouloir indiquer le type de NC", vbOKOnly + vbInformation, "ATTENTION : Type de NC non renseigné"
        End If
    Else
        MsgBox "Merci de bien vouloir indiquer le Nom du Chef de Quai", vbOKOnly + vbInformation, "ATTENTION : Nom du Chef de Quai non renseigné"
    End If
     
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload UserForm2
    End Sub
     
    Private Sub UserForm_Initialize()
        Dim i As Byte
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 2) = "" Then
               Exit For
            Else
             ComboBox1.AddItem Worksheets("Données").Cells(i, 2)
            End If
        Next i
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 1) = "" Then
               Exit For
            Else
             ComboBox2.AddItem Worksheets("Données").Cells(i, 1)
            End If
        Next i
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 3) = "" Then
               Exit For
            Else
             ComboBox3.AddItem Worksheets("Données").Cells(i, 3)
            End If
        Next i
    End Sub
    Jusqu'ici tout va bien.

    J'ai par la suite recréer le même userforms pour modifier. Pour appeler ce Userform3 il suffit de double cliquer sur une cellule de la ligne souhaité. Une fois double cliquer s'affiche la userform 3


    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
    Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim numligne, numcolonne As Integer
        If Not Intersect(Target, Range("C7:H1080")) Is Nothing Then
            numligne = Target.Row
            numcolonne = Target.Column
            If Worksheets("Suivi NC").Cells(numligne, 4) <> "" Then
                Cancel = True
                UserForm3.Show
            Else
                MsgBox "Cette ligne est vide, merci de bien vouloir cliquer une ligne renseigné pour la modifier ou la supprimer", vbOKOnly + vbInformation, "ATTENTION : Ligne vide"
                Cells(numligne, 3).Select
     
            End If
        End If
    End Sub
    Ici encore tout va bien. Par contre dans mon 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
    Private Sub UserForm_Initialize()
        Dim i As Byte
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 2) = "" Then
               Exit For
            Else
             ComboBox1.AddItem Worksheets("Données").Cells(i, 2)
            End If
        Next i
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 1) = "" Then
               Exit For
            Else
             ComboBox2.AddItem Worksheets("Données").Cells(i, 1)
            End If
        Next i
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 3) = "" Then
               Exit For
            Else
             ComboBox3.AddItem Worksheets("Données").Cells(i, 3)
            End If
        Next i
     
    End Sub
    Il faut que j'arrive à récupérer les données de mes cellules liés à la ligne double cliquer. Pour cela il me faut le numéro de ligne.
    C'est ici que ça coince. Mon numéro de ligne je l'ai dans
    Public Sub Worksheet_BeforeDoubleClick
    mais comment l'envoyer dans
    Private Sub UserForm_Initialize()
    ?

    Je ne sais pas si je me suis fait comprendre, je reste à disposition pour plus d'information. Je remercie d'avance toute cette communauté en espérant trouver quelqu'un qui peux me retirer cette épine du pied.

  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
    Si ton problème est de faire passer un paramètre d'une macro à l'autre, déclare une variable publique dans un module standard (en tête du module) :

    Tu renseignes la variable dans la macro "Worksheet_BeforeDoubleClick" et tu la lis dans la macro "UserForm_Initialize".

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Je suis désolé mais je ne comprend pas. Voila ce que j'ai fait après t'avoir lu :

    dans thisworkbook j'ai écrit simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public numligne, numcolonne As Integer
    Je les renseigner ici :
    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
    Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("C7:H1080")) Is Nothing Then
            numligne = Target.Row
            numcolonne = Target.Column
            If Worksheets("Suivi NC").Cells(numligne, 4) <> "" Then
                Cancel = True
                UserForm3.Show
            Else
                MsgBox "Cette ligne est vide, merci de bien vouloir cliquer une ligne renseigné pour la modifier ou la supprimer", vbOKOnly + vbInformation, "ATTENTION : Ligne vide"
                Cells(numligne, 3).Select
     
            End If
        End If
    End Sub
    Et je l'exploite dans :

    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
    Private Sub UserForm_Initialize()
        Dim i As Byte
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 2) = "" Then
               Exit For
            Else
             ComboBox1.AddItem Worksheets("Données").Cells(i, 2)
            End If
        Next i
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 1) = "" Then
               Exit For
            Else
             ComboBox2.AddItem Worksheets("Données").Cells(i, 1)
            End If
        Next i
     
        For i = 2 To 50
            If Worksheets("Données").Cells(i, 3) = "" Then
               Exit For
            Else
             ComboBox3.AddItem Worksheets("Données").Cells(i, 3)
            End If
        Next i
     
        ComboBox1.Value = Cells(numligne, 4).Value
    End Sub
    Mais ca ne marche pas, le débugueur me mets en jaune le
    UserForm3.Show

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour,
    les UserForm sont des class, si une erreur ce produit dans la UserForm, erreur n'apparait pas en lieu et place de l'erreur mais sur UserForm.show.

    il te faut faire du pas à pas touche [F8] pour arrivé à l'endroit exacte de l'erreur.

    donc quand le débuger affiche UserForm.show en jaune, fait [F8] plusieurs foies jusqu'à l'erreur.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Je sais que cela viens de la variable dans Iniatialize.

    Je voulais juste en informer les personnes qui m'aide. Mais cela ne résout, malheureusement, pas mon problème.



    Merci de bien vouloir m'aider.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    merci merci merci Daniel, en cherchant encore et encore j'ai trouvé. J'avais placer ca dans le thisworkbook. Apres l'avoir placé dans un module ca marche... Merci encore à vous deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Probléme de variable
    Par Silvia12 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/03/2005, 11h51
  2. [Debutant(e)]problème de variable d'environnement
    Par tolsam dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 19h08
  3. Problème de variable
    Par vp dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2004, 16h27
  4. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  5. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31

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