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 :

VBA Compter le nombre de .Selected ListBox selectionnées [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut VBA Compter le nombre de .Selected ListBox selectionnées
    Bonjour,

    Je voudrais compter le nombre d'éléments d'une multifonction d'une ListBox, mais je n'y arrive pas
    Ci joint mon code et en rouge ou je bloque : (bien sur j'ai raccourcie le code) [le nom de ma ListBox est Selection_Taches]

    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
    Private Sub Ok_Click()
    
        Dim lItem As Long
        For lItem = 0 To Selection_Taches.ListCount - 1
        If Selection_Taches.Selected(lItem) = True Then
    
        MsgBox "Information saisie : " & vbLf & vbLf _
        & "Personne : " & Personnes & vbLf _
        & "Vous avez passé : " & Heures & " heure à faire : " & Selection_Taches.ListIndex & " tâche(s)" & vbLf & vbLf _
        & "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / Selection_Taches.ListIndex.Selected(lItem) & vbLf _
        & "Pour faire : " & Selection_Taches.List(lItem) _
        , vbInformation, "Information"
    
        Selection_Taches.Selected(lItem) = False
        End If
        Next
        Unload Me
    
    End Sub
    J'ai recherché sur Google mais la solution que je trouve c'est compter la totalité de ma liste, alors que je voudrais seulement ce que j'ai sélectionnée.
    car je m'en sert en suite pour faire un prorata des mes heures saisies.

    Ce qui donnerai : Nom : Google.jpg
Affichages : 2889
Taille : 35,1 Ko
    (On voit bien derrière que j'ai sélectionné que 4 éléments pour 4 heures)

    Merci de votre aide. Bien Cdt

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Salut à toi,

    Essaye quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then k = k + 1
    Next i
    Msgbox "Vous avez sélectionné " & k &" lignes"
    Tu récupères ainsi sans souci le nombre d'items sélectionnés

    J'ai l'impression que dans ton cas, tu as intégré ton msgbox dans la boucle... Il faut faire une boucle à part pour compter d'abord les items sélectionnés (et au passage faire des maths avec le contenu des lignes si tu le souhaites).

    J'espère que ça t'aidera !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim lItem As Long
    Dim Compteur As Long
        For lItem = 0 To Selection_Taches.ListCount - 1
            If Selection_Taches.Selected(lItem) = True Then compteur = compteur + 1 ':Selection_Taches.Selected(lItem) = False
        Next lItem
     
        MsgBox "Information saisie : " & vbLf & vbLf _
        & "Personne : " & Personnes & vbLf _
        & "Vous avez passé : " & Heures & " heure à faire : " & compteur  & " tâche(s)" & vbLf & vbLf _
        & "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / compteur & vbLf _
        & "Pour faire : " & compteur  _
        , vbInformation, "Information"
     
        Unload Me
    Pas certain d'avoir bien remplacé, tu me dis si ça t'aide

  3. #3
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut VBA Compter le nombre de .Selected ListBox selectionnées
    C'est pas tout a fait ça. Je donne le code entier comme ça se sera peut être mieux.
    Car en faite ça doit faire une boucle pour ajouter chaque(s) sélection(s) dans une colonne.

    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
    Private Sub Ok_Click()
     
        If Personnes.ListIndex = -1 Then
            MsgBox "Aucune personne n'est selecitionée !", vbCritical
        Exit Sub
        End If
     
        If Selection_Taches.ListIndex = 0 Then
            MsgBox ("Aucunes n'est tâche(s) selectionnée(s) !"), vbCritical
        Exit Sub
        End If
     
        If Heures.Value = "" Then
            MsgBox ("Vous n'avez mis aucun temps passé !"), vbCritical
        Exit Sub
        End If
     
        Call Fichier_Taches
        Windows("planning taches mensuelles - " & Personnes & ".xlsx").Activate
        Application.WindowState = xlMinimized
     
        Dim lItem As Long
        For lItem = 0 To Selection_Taches.ListCount - 1
        If Selection_Taches.Selected(lItem) = True Then
     
        MsgBox "Information saisie : " & vbLf & vbLf _
        & "Personne : " & Personnes & vbLf _
        & "Vous avez passé : " & Heures & " heure à faire : " & Selection_Taches.ListIndex.Selected(lItem) & " tâche(s)" & vbLf & vbLf _
        & "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / Selection_Taches.ListIndex) & vbLf _
        & "Pour faire : " & Selection_Taches.List(lItem) _
        , vbInformation, "Information"
     
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(1, 0).FormulaR1C1 = Format(Date, "mmm")
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 1).FormulaR1C1 = Format(Date, "mm/dd/yyyy")
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 2).FormulaR1C1 = Selection_Taches.List(lItem)
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 3).FormulaR1C1 = (Format(Heures, " 0.00") / Selection_Taches.ListIndex)
     
        Selection_Taches.Selected(lItem) = False
        End If
        Next
     
        Windows("planning taches mensuelles - " & Personnes & ".xlsx").Activate
        Application.WindowState = xlMinimized
        ActiveWorkbook.Save
        ActiveWindow.Close
        MsgBox "Merci " & Personnes & vbLf & " données saisie !", vbInformation, "Confirmation"
        Unload Me
     
    End Sub
    En gros ça donne le nom de la sélection + le temps passé /divisé par le nombre de sélection(s)
    Exemple : (2 sélections pour 1 heures) Résultat :
    - Traitement courrier 0,50
    - Mise sous pli 0,50

  4. #4
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut VBA Compter le nombre de .Selected ListBox selectionnées
    C'est bon grâce à ton code j'ai pu l'adapter au miens en faisant une boucle après ton code :
    Et ça fonctionne parfaitement.

    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
    Private Sub Ok_Click()
     
        Dim l As Long
        Dim Compteur As Long
        For l = 0 To Selection_Taches.ListCount - 1
            If Selection_Taches.Selected(l) = True Then Compteur = Compteur + 1
        Next l
     
        Dim lItem As Long
        For lItem = 0 To Selection_Taches.ListCount - 1
        If Selection_Taches.Selected(lItem) = True Then
     
        MsgBox "Information saisie : " & vbLf & vbLf _
        & "Personne : " & Personnes & vbLf _
        & "Vous avez passé : " & Heures & " heure à faire : " & Compteur & " tâche(s)" & vbLf & vbLf _
        & "Soit : " & (Format(Replace(Heures, ".", ","), " 0.00") / Compteur) & " heure(s)" & vbLf _
        & "Pour faire : " & Selection_Taches.List(lItem) _
        , vbInformation, "Information"
     
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(1, 0).FormulaR1C1 = Format(Date, "mmm")
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 1).FormulaR1C1 = Format(Date, "mm/dd/yyyy")
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 2).FormulaR1C1 = Selection_Taches.List(lItem)
        Sheets("Tâches").Range("A65536").End(xlUp).Offset(0, 3).FormulaR1C1 = (Format(Replace(Heures, ".", ","), " 0.00") / Compteur)
     
        Selection_Taches.Selected(lItem) = False
        End If
        Next
     
        Unload Me
     
    End Sub

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

Discussions similaires

  1. VBA compter le nombre de valeurs uniques
    Par Tableau de bord 7 dans le forum Contribuez
    Réponses: 1
    Dernier message: 04/06/2014, 10h27
  2. [XL-2013] VBA Compter le nombre de graphes selectionnés
    Par Marneus22 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/08/2013, 17h09
  3. [VBA] - compter le nombre de boutons dans un UF
    Par n0vocaine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2011, 14h28
  4. compter le nombre de selection d'une dbgrid
    Par mattmax dans le forum Débuter
    Réponses: 1
    Dernier message: 17/05/2010, 13h35
  5. Réponses: 4
    Dernier message: 01/02/2008, 14h39

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