Label.Caption qui n'affiche pas le bon résultat...?

Bonjour à tous,

Ma question est dans le titre, il s'agit du "label13" du "UserForm10", celui qui doit indiquer le total des enregistrements (18 au lieu de 7...???).

Avez-vous une idée d'ou peut venir cette erreur, car moi, je sèche...

Merci de partager votre savoir...

Mon fichier joint :

Bonjour

Dans l'initialisation de ton USF,

Remplace:

'....Remplir Label13 par le nombre d'enregistrement de la liste
Label13.Caption = ListBox1.ListCount

Par

'....Remplir Label13 par le nombre d'enregistrement de la liste
Label13.Caption = ligne2 - 1

de la façon que c'était codé, tu comptais le nombre de ligne de ta listbox1

Bonjour

Remplace BD4 par BD1 :

'....Trouver la dernière cellule pleine de la colonne A:A

ligne = Sheets("BD4").[A65536].End(xlUp).Row

'....Remplir la ListBox1 par lex deux colonnes B:B et C:C (Nom et Prénom)

ListBox1.List = Sheets("BD1").Range("B2:C" & ligne).Value

OK ?

Bye !

bonjour CB60 et gmb,

Vos deux solutions fonctionnent à merveille et je vous en remercie...

A+ sur d'autres posts, car nul doute que j'aurai encore besoin de vos connaissances...

Bonjour

tu refait ta Listbox

A voir

    With Feuil6
       ListBox1.List = .Range("B2:C" & .Range("B" & Rows.Count).End(xlUp).Row).Value
    End With

A+

Maurice

Bonsoir

retour de ton fichier modifier

tu a du nettoyage a faire

A+

Maurice

Bonjour archer,

Merci pour la modification de mon fichier et bravo, belle optimisation du code, qui permet de réduire de 4 à 2 lignes de code et de se passer des déclarations de variables...

tout ça en restant très lisible...

Je vais essayer de m'en inspirer pour mes programmations futures...

Merci encore pour ton aide...

Bonjour

regarde j'ais fait un peux de nettoyage

et voir aussi userform9 pour les mois 2 style de combobox

A+

Maurice

bonjour archer,

Merci pour cette nouvelle méthode, mais j'ai du mal à interpréter cette partie :

Format(DateSerial(1, M, 1), "mmmm")

peux-tu me l'expliquer STP ?

Merci...

Bonjour atlonia, le forum,

Il y a d'abord DateSerial(1, M, 1) ; le 1er 1 est l'année (j'suppose que l'An 1, ça doit être la 1ère année après J-C) ; M est le mois ; et le 2ème 1 est le jour ; extrait de l'aide VBA pour DateSerial :

https://www.excel-pratique.com/fr/fonctions-vba/dateserial

Ensuite, la Date retournée est mise avec un format qui retourne seulement le mois, et "mmmm" fait qu'c'est en toutes lettres.

dhany

Bonsoir dhany,

Merci pour cette explication...

En fait, c'est le M dans (1, M, 1) que j'ai du mal à comprendre, la page Microsoft n'en parle pas, mais parle plutôt de "valeur numérique" ou "d'expression numérique", pas de lettre...

Si tu as une explication à la présence d'une lettre à la place d'un chiffre, je suis curieux...

Quand tu dis

le 1er 1 est l'année (j'suppose que l'An 1, ça doit être la 1ère année après J-C)

, je pense qu'il fait plutôt référence aux années 1900 ou 1904 : https://support.microsoft.com/fr-fr/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

En tout cas, merci encore pour ton aide...

Bonjour atlonia,

ma phrase « j'suppose que l'An 1, ça doit être la 1ère année après J-C » était en fait une boutade, car l'An 1 après Jésus-Christ est plusieurs siècles avant l'année d'apparition du 1er PC (= "Personal Computer", pas "Porte-Croix") !

l'année de la 1ère date est effectivement 1904 sur Macintosh et 1900 sur PC ; une des options avancées d'Excel permet de choisir l'un des 2 systèmes de date (c'est selon les préférences de l'utilisateur).


pour la date d'aujourd'hui, le 7 août de l'An de Grâce 2018, donc le 07/08/2018, on mettrait ceci (pour un résultat en cellule A1) :

Sub Essai()
  [A1] = DateSerial(2018, 8, 7)
End Sub

car l'ordre des 3 arguments est Année, Mois, Jour.


parfois, on voit : date au format JJ/MM/AAAA : il faut comprendre que JJ est le jour sur 2 chiffres ; MM est le mois sur 2 chiffres ; AAAA est l'année sur 4 chiffres ; aussi, pour le M de (1, M, 1) je pense que le M n'est pas à mettre littéralement, mais qu'il faut le remplacer par le mois (sur 1 seul chiffre de 1 à 9 ; sur 2 chiffres pour 10 à 12) ; c'est possible aussi que M soit une variable M qui contient une valeur de 1 à 12.

le jour sur 2 chiffres signifie qu'on met un zéro devant si jour < 10 ; donc 01 à 09 au lieu de 1 à 9 ; mois sur 2 chiffres : idem

dhany

Bonjour dhany,

Pardon, je n'avais pas saisi la boutade...

Merci pour ces nouvells explications qui me seront bien utiles...

et à d'autres aussi je pense.

Merci encore et à +

Bonsoir

il faut voir le tout pour comprendre

ses pour faire une combobox avec tout les mois

donc tu ne change rien

      For M = 1 To 12
        ComboBox1.AddItem Format(DateSerial(1, M, 1), "mmmm")
      Next

A+

Maurice

Bonsoir,

merci archer pour la confirmation ! car c'est bien c'que j'avais écrit plus haut, dans mon post de 04:11 :

dhany a écrit :

pour le M de (1, M, 1) je pense que le M n'est pas à mettre littéralement, mais qu'il faut le remplacer par le mois (sur 1 seul chiffre de 1 à 9 ; sur 2 chiffres pour 10 à 12) ; c'est possible aussi que M soit une variable M qui contient une valeur de 1 à 12.

(c'est dans le paragraphe qui est juste au-dessus de la dernière phrase du post)


donc avec For M = 1 To 12 ... Next : M est bien une variable M qui va de 1 à 12 !

remarque : c'est mieux de mettre Next M à la place de Next : ça va plus vite !

dhany

Bonsoir dhany et archer,

Merci d'avoir fait la lumière sur ce point, maintenant que vous l'avez décortiqué, ça devient une évidence...

Merci surtout de prendre la peine de nous aider à comprendre et de ne pas simplement nous donner des bouts de code ou de nous faire le travail sans explications, ce qui ne nous ferait pas avancer...

respect à vous deux et à tous ceux qui donnent de leur savoir....

A +

Rechercher des sujets similaires à "label caption qui affiche pas bon resultat"