Transférer avec countif d'une listbox vers feuille excel?

Bonjour tout le monde,

J'ai ce petit code qui fonctionne bien et qui me transfere les donnée du list box vers la feuile"PRODUCTIVITE"

For I = 1 To 10 'modif 06 09
    If Me.Controls("ListBox" & I + 1).ListCount > 0 Then
      With Sheets("PRODUCTIVITE")
        LgDer = .Range("A65536").End(xlUp).Row + 1
        .Range("A" & LgDer) = CDate(Me.Label122.Caption)
        .Range("B" & LgDer) = Me.Controls("ComboBox" & I)
        .Range("C" & LgDer) = Me.Controls("Listbox" & I + 1).ListCount
        .Range("F" & LgDer) = Format(Me.Controls("TextBox" & 400 + (I * 3)), "hh:mm") 'Format(Me.TextBox1.Value, "hh:mm")
      End With

J'aurais aimé rajouté une ligne qui transfère le nombre des lettres "R" (situé dans la colonne 2 de listbox (sachant que sur cette colonne figure les les lettres "R", "D","HS"), j'ai essayé "countif", et le code ci dessous mais pas de solution pour le moment

.Range("D" & LgDer) = Val(Me.Controls("Listbox" & I + 1) = ("R"))

Si quelqu'un as une idée je suis preneur.

ci-dessous capture écran de la list box

diapositive2 diapositive2

Amicalement,

Bonjour

Dans la colonne 2 tu ne peux avoir qu'un seul "R" ?

Essayes

.Range("D" & LgDer) = IIf(Me.Controls("ListBox" & I + 1).List(Me.Controls("ListBox" & I + 1).ListIndex, 1) = "R", 1, "")

Bonjour Banzai ,forum,

Merci pour ta réponse, pour le moment rien ne se passe et pour répondre a ta question: il peux y avoir plusieurs "R" et 20 au maximum.

Amicalement,

Bonjour

J'ai peut-être (surement ) mal compris la question

Tu veux compter dans tous les enregistrements de la Listbox ceux qui ont la lettre R ?

Si c'est ça

Soit parcourir tous les enregistrements et vérifier si ils contiennent la lettre "R"

Soit à partir de la source (Base de données dans une page ?) de la Listbox compter avec un NB.SI() ( CountIf )

Bonjour Banzai, Forum,

Merci encore pour ta contribution.

En faite tu as bien compris c'est moi qui s'exprime mal ; je veux compter le nombre des enregistrements de la Listbox ceux qui ont la lettre R ?

Ce qui est curieux c'est que ton bout de code fonctionne si je remplace "R" par" D"????mais rien ne s'enregistre avec "R"!!!

C'est vrai que c'est plus facile d'utiliser Nb.si ou countif mais le problème c'est que la listbox est juste une transition du coup je stock pas les enregistrements dans une base de donnée c'est pour cela je suis obligé de passer par vba!!!!

Je te joins le fichier (attention c'est un chantier) ce qui m’intéresse c'est juste ce point la.

149ex-internet.zip (92.71 Ko)

Merci d'avance

Amicalement

Bonjour

Une solution à tester

Ajoutes les lignes surlignées

  For I = 1 To 5
    If Me.Controls("ListBox" & I + 1).ListCount > 0 Then
      With Sheets("PRODUCTIVITE")
        LgDer = .Range("A65536").End(xlUp).Row + 1
        .Range("A" & LgDer) = CDate(Me.Label122.Caption)
        .Range("B" & LgDer) = Me.Controls("ComboBox" & I)
        .Range("C" & LgDer) = Me.Controls("Listbox" & I + 1).ListCount
        Tot = 0
        For J = 0 To Me.Controls("ListBox" & I + 1).ListCount - 1
          If Me.Controls("ListBox" & I + 1).List(Me.Controls("ListBox" & I + 1).ListIndex, 1) = "R" Then Tot = Tot + 1
        Next J
        .Range("D" & LgDer) = Tot
        '.Range("D" & LgDer) = IIf(Me.Controls("ListBox" & I + 1).List(Me.Controls("ListBox" & I + 1).ListIndex, 1) = "R", 1, "")

       .Range("E" & LgDer) = Val(Me.Controls("TextBox" & 401 + (I * 1)))

      End With

      Set Sh = Sheets(Me.Controls("ComboBox" & I).Value)
      LgDer = Sh.Range("B65536").End(xlUp).Row
      If LgDer > 7 Then '????
        Sh.Range("B8:D" & LgDer).ClearContents ' ???? supp le travail des # de la veille aaprtir du 8 liegne

      End If
      Tot = 0
      With Me.Controls("Listbox" & I + 1)
        Tot = Tot + .ListCount

Bonjour Banzai, forum,

Malheureusement ça fonctionne pas malgré les 2 bouts de codes, par-contre il calcul le nombre total d'enregistrement de la list box.

Amicalement

Bonsoir

Désolé mal testé

Essayes en modifiant la ligne surlignée

  For I = 1 To 5
    If Me.Controls("ListBox" & I + 1).ListCount > 0 Then
      With Sheets("PRODUCTIVITE")
        LgDer = .Range("A65536").End(xlUp).Row + 1
        .Range("A" & LgDer) = CDate(Me.Label122.Caption)
        .Range("B" & LgDer) = Me.Controls("ComboBox" & I)
        .Range("C" & LgDer) = Me.Controls("Listbox" & I + 1).ListCount
        Tot = 0
        For J = 0 To Me.Controls("ListBox" & I + 1).ListCount - 1
          If Me.Controls("ListBox" & I + 1).List(J, 1) = "R" Then Tot = Tot + 1
        Next J
        .Range("D" & LgDer) = Tot
        '.Range("D" & LgDer) = IIf(Me.Controls("ListBox" & I + 1).List(Me.Controls("ListBox" & I + 1).ListIndex, 1) = "R", 1, "")

       .Range("E" & LgDer) = Val(Me.Controls("TextBox" & 401 + (I * 1)))

      End With

      Set Sh = Sheets(Me.Controls("ComboBox" & I).Value)
      LgDer = Sh.Range("B65536").End(xlUp).Row
      If LgDer > 7 Then '????
        Sh.Range("B8:D" & LgDer).ClearContents ' ???? supp le travail des # de la veille aaprtir du 8 liegne

      End If
      Tot = 0
      With Me.Controls("Listbox" & I + 1)

Bonjour banzai, forum,

No comment

Et et au forum aussi.

Mais je ne comprends pas pourquoi on utilise tot =0 et tot=tot+1, pour arrivée au résultat (j'ai trouvé cette combinaison dans plusieurs macros ,,,bon j'essayerais de voir l'intérêt sur le forum!!!!

Ps:t'as eu le message?

Amicalement,

Rechercher des sujets similaires à "transferer countif listbox feuille"