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 :

listbox une condition si une ligne vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut listbox une condition si une ligne vide
    Bonjour a tous,

    j ai fait une listbox, avec un bouton qui apres un encodage dans un textbox, m'ajoute un numero dans une cellule. jusque la pas de probleme seulement, j aimerais en plus de cela rajouter une condition qui ferai en sorte de ne pas afficher se numéro, si la cellule de la colone A est vide.

    un peu compliquer a expliquer en francais mdr, je vous joins le fichier qui sera plus clair, ainsi que mes code :

    le code du bouton :
    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
    Private Sub CommandButton3_Click() '''a modifier dans les autres UF
    Dim ligne As Integer
     
    If Libellé = TextBox1 Or Libellé = Numero Then  ' => SI condition validée ALORS
       'Instructions si vrai
     
    Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
    Else ' => SINON
       'Instructions si faux
         MsgBox " Vous n'avez pas rentré le bon joueur"
         Libellé.Value = Clear
     
    End If
     
     
      Dim l As Integer
      l = Range("D" & Rows.Count).End(xlUp).Row + 1
     
      Range("D" & l) = Application.WorksheetFunction.Sum(Sheets("Select billard").Range("F1"))
     
     
     
    End Sub
    les codes de la UF:

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
     
    Dim nbCol, pointeur, ligne
    Dim bd, f
     
    Private Sub CommandButton1_Click()
      Dim l As Integer
      l = Range("D" & Rows.Count).End(xlUp).Row + 1
     
      Range("D" & l) = Application.WorksheetFunction.Sum(Sheets("Select billard").Range("F1"))
     
    End Sub
     
    Private Sub CommandButton3_Click() '''a modifier dans les autres UF
    Dim ligne As Integer
     
    If Libellé = TextBox1 Or Libellé = Numero Then  ' => SI condition validée ALORS
       'Instructions si vrai
     
    Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
    Else ' => SINON
       'Instructions si faux
         MsgBox " Vous n'avez pas rentré le bon joueur"
         Libellé.Value = Clear
     
    End If
     
     
      Dim l As Integer
      l = Range("D" & Rows.Count).End(xlUp).Row + 1
     
      Range("D" & l) = Application.WorksheetFunction.Sum(Sheets("Select billard").Range("F1"))
     
     
     
    End Sub
     
    Private Sub CommandButton4_Click()
     
    Libellé.Value = Clear
     
    Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
     
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
    End Sub
     
    Private Sub CommandButton5_Click()
     
    Application.Run "TOUR1"
     
    Worksheets("1").Range("F4:H260").Copy Worksheets("Tournois").Range("A5:C260")
     
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
        Sheets("Tournois").Select
        Range("B5").Select
        ActiveCell.FormulaR1C1 = "-"
        Selection.AutoFill Destination:=Range("B5:B129"), Type:=xlFillDefault
        Range("B5:B129").Select
     
    End Sub
     
    Private Sub CommandButton6_Click()
     
       If MsgBox("Faire un nouveau tour ?", vbYesNo, "Demande de confirmation") = vbYes Then
           Application.Run "TiragePoules1"
     
    Worksheets("1").Range("F4:H260").Copy Worksheets("Tournois").Range("A5:C260")
     
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
        End If
     
    End Sub
     
    Private Sub UserForm_Activate()
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
    End Sub
     
    Private Sub UserForm_Initialize()
     
      Set f = Sheets("Tournois")
      Set d = CreateObject("Scripting.Dictionary")
      Set bd = f.Range("A2:H" & f.[A65000].End(xlUp).Row) ' change l emplacement de la recherche
      For i = 10 To bd.Rows.Count
        If bd.Cells(i, 1) <> "" Then d(bd.Cells(i, 1).Value) = ""
      Next i
      Temp = d.keys
      'Call Tri(temp, LBound(temp), UBound(temp))
      'Me.TextBox1 = temp
      Me.ZoneRec.List = bd.Value
      For k = 1 To 18: Me("label" & k).Caption = f.Cells(9, k): Next k
     
    Numero = Sheets("Tournois").Cells(2, 3)
    TextBox1 = Sheets("Tournois").Cells(2, 1)
    TextBox2 = Sheets("Tournois").Cells(2, 4)
    Libellé = Sheets("Tournois").Cells(2, 5)
    Pièce = Sheets("Tournois").Cells(2, 6)
     
        'ZoneRec.RowSource = "Tournois!A:F"
        ZoneRec.ColumnWidths = "40;20;50;50"
     
    End Sub
     
    Private Sub B_ok_Click()
       Dim a()
       N = Application.CountIf(Application.Index(bd, , 1), Me.MotCle)
       ReDim a(1 To N, 1 To bd.Columns.Count)
        ligne = 0
       For i = 10 To bd.Rows.Count
         If bd.Cells(i, 1) = Me.MotCle Then
           ligne = ligne + 1
           For k = 1 To bd.Columns.Count: a(ligne, k) = bd.Cells(i, k): Next k
          End If
       Next i
       Me.ZoneRec.List = a()
    End Sub
     
    Private Sub b_tout_Click()
      Me.ZoneRec.Clear
      For i = 10 To f.[A65000].End(xlUp).Row
          Me.ZoneRec.AddItem
          Me.ZoneRec.List(i - 10, 0) = f.Cells(i, 1)
          Me.ZoneRec.List(i - 10, 1) = i
       Next
       pointeur = 0
       ligne = Me.ZoneRec.List(pointeur, 1)
       affiche
    End Sub
     
    Private Sub ZoneRec_Click()
     
        ligne = ZoneRec.ListIndex + 2
     
        Numero = Sheets("Tournois").Cells(ligne, 3)
        TextBox1 = Sheets("Tournois").Cells(ligne, 1)
        TextBox2 = Sheets("Tournois").Cells(ligne, 4)
        Libellé = Sheets("Tournois").Cells(ligne, 5)
        Pièce = Sheets("Tournois").Cells(ligne, 6)
     
     
      'ligne = Me.ZoneRec.Column(1)
      'pointeur = Me.ZoneRec.ListIndex
      'affiche
    End Sub
    Private Sub b_suiv_Click()
     If pointeur < Me.ZoneRec.ListCount - 1 Then
       pointeur = pointeur + 1
       ligne = Me.ZoneRec.List(pointeur, 1)
       affiche
     End If
    End Sub
    Private Sub b_prec_Click()
     If pointeur > 0 Then
       pointeur = pointeur - 1
       ligne = Me.ZoneRec.List(pointeur, 1)
       affiche
     End If
    End Sub
    Private Sub b_premier_Click()
       pointeur = 0
       ligne = Me.ZoneRec.List(pointeur, 1)
       affiche
    End Sub
    Private Sub b_dernier_Click()
       pointeur = Me.ZoneRec.ListCount - 1
       ligne = Me.ZoneRec.List(pointeur, 1)
       affiche
    End Sub
     
    Private Sub Annuler_Click()
    tour_1.Hide
    End Sub
     
    Private Sub Modifier_Click()
     
    Me.ZoneRec.List = bd.Value
     
    End Sub
    l'idee du code que j'arrive pas a faire...

    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 CommandButton3_Click() '''a modifier dans les autres UF
    Dim ligne As Integer
     
    If Libellé = TextBox1 Or Libellé = Numero Then  ' => SI condition validée ALORS
       'Instructions si vrai
     
    Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
    Else ' => SINON
       'Instructions si faux
         MsgBox " Vous n'avez pas rentré le bon joueur"
         Libellé.Value = Clear
     
    End If
     
       if [premiere cellule vide en A] = emply then
    'ne rien faire
     
    else
    'si c estt faux ajouter mon numéro
      Dim l As Integer
      l = Range("D" & Rows.Count).End(xlUp).Row + 1
     
      Range("D" & l) = Application.WorksheetFunction.Sum(Sheets("Select billard").Range("F1"))
     
    end if
     
    End Sub
    merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    j ai essayé ce code mais toujours sans succes

    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
    Private Sub CommandButton3_Click() '''a modifier dans les autres UF
     
    If Libellé = TextBox1 Or Libellé = Numero Then  ' => SI condition validée ALORS
       'Instructions si vrai
     
    Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
    Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
     
    Else ' => SINON
       'Instructions si faux
         MsgBox " Vous n'avez pas rentré le bon joueur"
         Libellé.Value = Clear
     
    End If
     
     Dim l As Integer
     
    If (Sheets("Tournois").Cells(ligne, 1)) = empty Then
     
    l = Range("D" & Rows.Count).End(xlUp).Row + 1
     
    Range("D" & l) = Application.WorksheetFunction.Sum(Sheets("Select billard").Range("F1"))
     
    Else
     
     
     
    End If
     
    End Sub

  3. #3
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Svbb, bonjour le forum,

    Le lien vers ton fichier ne fonctionne pas !... Alors j'ai commencé à regarder ton code et je m'aperçois que la variable ligne est déclarée mais pas définie !... Tu devrais avoir un plantage dès la ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
    À plus,

    Thauthème

    Je suis Charlie

  4. #4
    Membre du Club
    Femme Profil pro
    independant
    Inscrit en
    Janvier 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : independant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    ligne_vide.xlsm

    merci pour ta reponse

    j ai remis le fichier, il n est pas defini ca veux dire? que dois je rajouter?

  5. #5
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Svbb, bonjour le forum,

    Ton fichier est toujours inaccessible. Ça ne m'étonne pas puisque le site a tendance à refuser les pièces jointes. Peut-être pourrais-tu le mettre chez un hébergeur quelconque (par exemple : http://www.cjoint.com/) et renvoyer le lien. Ça devrait passer...
    Sinon quand je te dit que ligne n'est pas définie c'est qu'elle n'a pas de valeur, elle n'a pas été initialisée. Donc elle vaut zéro et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Tournois").Cells(0, 5) = Libellé.Value
    va forcément planter !...

    Ton code devrait être :

    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
     
    Private Sub CommandButton3_Click() '''a modifier dans les autres UF
    Dim ligne As Integer
    Dim l As Integer
     
    ligne = 2 'à adapter à ton cas, comme tu as fait pour la variable l un peu plus bas...
    If Libellé = TextBox1 Or Libellé = Numero Then  ' => SI condition validée ALORS
        'Instructions si vrai
        Sheets("Tournois").Cells(ligne, 5) = Libellé.Value
        Me.ZoneRec.RowSource = Range("A2:E2", Range("A65000").End(xlUp)).Address
    Else ' => SINON
        'Instructions si faux
        MsgBox " Vous n'avez pas rentré le bon joueur"
        Libellé.Value = Clear
    End If
    l = Range("D" & Rows.Count).End(xlUp).Row + 1
    Range("D" & l) = Application.WorksheetFunction.Sum(Sheets("Select billard").Range("F1"))
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/10/2015, 08h43
  2. Réponses: 3
    Dernier message: 13/09/2015, 19h21
  3. Réponses: 1
    Dernier message: 21/01/2011, 10h17
  4. masquer ou afficher une condition liée à une condition?
    Par secondechance dans le forum IHM
    Réponses: 2
    Dernier message: 14/11/2008, 20h36
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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