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 :

Ne pas ajouter à la ComboBox si case vide [XL-2016]


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
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut Ne pas ajouter à la ComboBox si case vide
    Bonjour à tous,

    J'arrive à alimenter ma ComboBox :
    - par ordre alphabétique
    - si "PFMP 4 S1" Range("D4: D39") > 0

    J'aimerais savoir si je peux rajouter l'option si "Synthèse" Range("F5:F40") <> ""
    Pour résumer, si ma cellule dans cette plage est vide, na pas ajouter la ligne associer dataRange (otherSheet.Range("A4:A39")).

    Je suis décalé d'une ligne entre mes deux feuilles...
    Sur la feuille synthèse je vais de la ligne 5 à 40 et sur la ligne synthèse je vais de la ligne 4 à 39.

    Voici 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 ComboBoxAffectation_GotFocus()
        Dim ws As Worksheet, otherSheet As Worksheet
        Dim checkRange As Range, dataRange As Range, cell As Range, checkCell As Range
        Dim tempArray() As String
        Dim cellCount As Long
     
        Set ws = ThisWorkbook.Sheets("Synthèse")
        Set otherSheet = ThisWorkbook.Sheets("PFMP 4 S1")
        Set checkRange = otherSheet.Range("D4:D39")
        Set dataRange = otherSheet.Range("A4:A39")
            cellCount = 0
     
        ReDim tempArray(1 To dataRange.Count)
            For Each cell In dataRange
            Set checkCell = checkRange.Cells(cell.Row - 3, 1)
                If Len(cell.Value) > 0 And checkCell.Value > 0 Then
                    cellCount = cellCount + 1
                    tempArray(cellCount) = cell.Value
                End If
            Next cell
     
        If cellCount > 0 Then
        ReDim Preserve tempArray(1 To cellCount)
            Call BubbleSort(tempArray)
            Me.ComboBoxAffectation.List = tempArray
        End If
     
    End Sub
    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 406
    Par défaut
    Bonjour,

    Pour autant que j'aie bien compris la question, voir ceci:
    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
    Private Sub ComboBoxAffectation_GotFocus()
        Dim ws As Worksheet, otherSheet As Worksheet
        Dim checkRange As Range, dataRange As Range, synthRange As Range
        Dim cell As Range, checkCell As Range, synthCell As Range
        Dim tempArray() As String, cellCount As Long
     
        Set ws = ThisWorkbook.Sheets("Synthèse")
        Set synthRange = ws.Range("F5:F40")
     
        Set otherSheet = ThisWorkbook.Sheets("PFMP 4 S1")
        Set dataRange = otherSheet.Range("A4:A39")
        Set checkRange = otherSheet.Range("D4:D39")
     
        cellCount = 0
        ReDim tempArray(1 To dataRange.Count)
     
        For Each cell In dataRange
            Set checkCell = checkRange.Cells(cell.Row - 3, 1)
            Set synthCell = synthRange.Cells(cell.Row - 3, 1)
            If Len(cell.Value) > 0 And checkCell.Value > 0 And Len(synthCell.Value) > 0 Then
                cellCount = cellCount + 1
                tempArray(cellCount) = cell.Value
            End If
        Next cell
     
        If cellCount > 0 Then
            ReDim Preserve tempArray(1 To cellCount)
            Call BubbleSort(tempArray)
            Me.ComboBoxAffectation.List = tempArray
        End If
     
    End Sub
    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut
    Super, cela fonctionne nickel.
    Merci pour ton aide.

    Par contre si je vide 1 cellule cela met bien à jour la combobox, par contre quand je vide toutes les cellules F5:F40 cela ne me vide pas la combobox. Est-ce normal ?

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 406
    Par défaut
    Bonjour,

    quand je vide toutes les cellules F5:F40 cela ne me vide pas la combobox
    Dans ce cas cellCount = 0 et donc cela saute les dernière instructions => pas de modification de la combobox. Une façon de traiter cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        If cellCount = 0 Then
            Me.ComboBoxAffectation.Clear
        Else
            ReDim Preserve tempArray(1 To cellCount)
            Call BubbleSort(tempArray)
            Me.ComboBoxAffectation.List = tempArray
        End If
    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut
    Impeccable, grand merci à vous.
    Bonne soirée

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

Discussions similaires

  1. case vide du combobox
    Par philippe6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/12/2013, 16h56
  2. Moyenne ne tenant pas en compte les cases vides
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/08/2009, 14h40
  3. Réponses: 4
    Dernier message: 18/11/2008, 21h33
  4. Ne pas afficher les cases vides
    Par axamen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/05/2007, 16h20
  5. Réponses: 23
    Dernier message: 07/02/2006, 08h43

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