Problème ListBox

pasmermayvir

XLDnaute Junior
Salut à Toutes et à Tous.....
J'espère que vous pourrez m'aidez????
J'explique mon problème.....
A partir d'un userform donc je peux rechercher une valeur d'après trois critères différents et le résultat de la recherche s'affiche dans une listBox...
Ensuite quand on clique sur un des éléments de la liste ... Les données s'affichent à leur tour dans divers textBoxs sous forme de fiche en fait.
Je n'arrive pas à afficher les données dans les textbox "Final" quand j'étends ma recherche sur plusieurs feuilles...
Un petit coup de main j'en peux plus
 

bqtr

XLDnaute Accro
Re : Problème ListBox

Bonsoir,

Pour le USF 2:
La recherche se fait sur toutes les feuilles existantes qui commencent par 2.
Donc les futures feuilles seront prises en comptes.
La CB ListAnnee n'est pas utile.

Pour le USF 3:
J'ai modifié la façon d'alimenter la CB cAnnée et la listbox1.
La CB cAnnée est alimentée avec les années qui ne sont pas encore utilisées jusqu'à l'année 2099. La colonne A de la feuille "Paramètres" n'est plus utile.
La listbox1 par les années utilisées.
Le bouton Valider sert à créer le N° séquentiel.
J'ai modifié la procédure d'erreur, tu n'avais pas traité la suppression des données sur la feuille "Paramètres".

Pour le USF 8:
Je suis parti du principe que tu travailles toujours sur la feuille de l'année en cours, donc avec l'instruction suivante tu seras automatiquement sur la bonne feuille.
Set ShtD = Sheets(CStr(Year(Date)))
(attention, dans le fichier il n'y a pas de feuille "2008")

Pour le USF 7:
Là je sais pas, sur quelle feuille tu travailles ? celle de l'année en cours ou sur une autre.
Tu sélectionnes une personne et tu imprimes ou un groupe de personnes et impression de chaque feuille ?

Pour le USF 4:
Que fait le bouton Nouveau ?
Là aussi sur quelle feuille tu travailles ? L'année en cours ou une autre.
Car quand il s'ouvre c'est l'année N+1 qui se met dans le label tAnnéePEC ?

Pour mettre le fichier j'ai supprimé l'image du USF 1 et une bonne partie des Codes Postaux.

A+

Edit: Fichier retiré et remplacé par un autre plus loin
 
Dernière édition:

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

Salut bqtr,
Je vais voir ce que tu as fait ou modifié..... Mais je te remercie déjà pour le boulot.... je sais que ce n'est pas évident de comprendre le travail d'un autre...
Sur l'USF 4, le bouton nouveau sert à changer le numéro de la fiche....
Quand l'USF s'ouvre, le dernier numéro de prise en charge est pris en compte et le numéro suivant est donc automatiquement actualisé. On remplit les textbox et on enregistre....plutôt on transmet les données à la feuille. Et donc pour la fiche suivante je clique sur btn nouveau... Je voulais que cela se fasse direct après "enregistrement" mais comme cela marchait... je m'était tant pris la tête sur ce numéro séquentiel.... C'est sûr qu'il doit y avoir plus simple.
Pour l'USF 7, je dois pouvoir éditer chaque fiche donc par numéro individuellement, chaque personne reçoit son avertissement.... Tout se passe sur l'année en cours car je prends en charge et j'avertis ensuite....
Tu as tout bon pour l'USF 8, je travaille toujours sur l'année en cours.
Comment te remercier, c'est trop cool.... Mon truc avance et se perfectionne avec toi....
A plus
 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

J'ai voulu "réinitialiser" mon application (car elle commencerait en 2009)...
En fait l'application est vierge de feuille "années" , le premier utilisateur crée sa première année, le numéro séquentiel se crée et la feuille "n années"...
Ainsi de suite....
Pour la consultation, il fallait que je crée deux années pour pouvoir tester et là je n'y arrivait plus....
Si je n'ai plus de valeur sur la feuille "paramètres" en C, L'appli plante à l'initialisation de l'USF 3.
Au secours
 

bqtr

XLDnaute Accro
Re : Problème ListBox

Bonjour,

Effectivement je n'avais pas pensé au fait que tu partais d'un classeur vide.

Remplace le code d'initialisation du USF3 par celui-ci.

Code:
Private Sub UserForm_Initialize()

Dim NumAnnee As Integer
Dim i As Byte

With Sheets("Paramètres")
  If .Range("C2") = "" Then
     ListBox1.AddItem "Vide"
       For i = 0 To 2099 - Year(Now)
          cAnnée.AddItem Year(Now) + i
       Next
  Else
    If .Range("C3") = "" Then
       ListBox1.AddItem .Range("C2")
    Else
       ListBox1.List = .Range("C2:C" & .Range("C65536").End(xlUp).Row).Value
    End If
    NumAnnee = .Range("C" & .Range("C65536").End(xlUp).Row).Value
        For i = 1 To 2099 - NumAnnee
          cAnnée.AddItem NumAnnee + i
        Next
  End If
End With

End Sub

Pour le reste je regarde dés que je peux.

Bonne soirée
 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

Salut bqtr
C'est beau T'es Trop FORT
Si tu pouvais voir un autre problème , je t'explique :
Donc je démarre genre en 2009, le numéro séquentiel s'affiche bien 090000 en case F1 de la feuille "Paramètres" mais dans la barre de formule on constate que le 1er Zéro est oublié et du coup mon premier numéro de fiche est faux ( 90001 au lieu de 090001).
Je peux intervenir manuellement en rajoutant '0 dans la barre de formule et après ça marche mais comment faire pour éviter cette intervention...
Je te remercie de m'aider à réaliser cette application.... Mon projet est en concurrence avec un projet ACCESS et tu comprendras mon souhait que mon truc soit retenu....
J'espère ne pas abuser de ton temps et je te remercierai jamais assez
A plus
 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

J'ai répondu un peu vite
J'ai modifié un peu le code pour le numéro séquentiel

Me.tNumSequ.Value = "'" & Right(cAnnée.Value, 2) & "0000"

au lieu de
Me.tNumSequ.Value = Right(cAnnée.Value, 2) & "0000"

Et ça marche
Je le répète t'es très fort et je remercie le forum pour cette rencontre et tous les autres qui m'ont indirectemnt aider.....
 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

J'essaie d'avancer dans mon application et sur une nouvelle requête je cale

C'est pour une listbox qui afficherait valeurs en fonction de la date du jour...

Mon fichier est trop lourd puisque j'ai rajouté un USF

Je peux envoyer le fichier sur boite perso ???
A plus
 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

Bonsoir à Tous,
Est-ce qu'une âme charitable voudra bien m'aider ....
Je n'arrive pas pour le bouton à faire passer les résultats de la lisbox1 trouvée à l'initialisation de l'USF...
Pour que ça marche , je refais la recherche....
Mon souhait est que il y est vraiment un visu avant de lancer finalement l'impression
Qui peut me dire pourquoi un message box s'affiche avant l'USF qui me d'indique la date du jour ? je Fais OK à chaque fois .... mais bon
Je montre le code à défaut du fichier qui est trop lourd
Je vous remercie



Dim Cel As Range, DerLig As Long, Feuille As Worksheet, VSearch As String, VLig As Long


Private Sub CommandButton1_Click()
For Each Feuille In ThisWorkbook.Worksheets
If Left(Feuille.Name, 1) = 2 Then
DerLig = Feuille.Range("Q" & Rows.Count).End(xlUp).Row
For Each Cel In Feuille.Range("Q3:Q" & DerLig)
If Cel = VSearch Then

Sheets("relance").Range("G12").Value = Cel.Offset(0, -16)
Sheets("relance").PrintOut
End If
Next Cel
End If
Next Feuille
End Sub

Private Sub UserForm_Initialize()


With ListBox1
.ColumnCount = 5
.ColumnWidths = "0cm;2cm;2cm;2cm;0cm"
End With
Label2.Caption = Format(Date, Today)

VSearch = Me.Label2.Caption
For Each Feuille In ThisWorkbook.Worksheets
If Left(Feuille.Name, 1) = 2 Then
DerLig = Feuille.Range("Q" & Rows.Count).End(xlUp).Row
For Each Cel In Feuille.Range("Q3:Q" & DerLig)
If Cel = VSearch Then
Me.ListBox1.AddItem Cel.Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cel.Offset(0, -16)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cel.Offset(0, -14)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cel.Offset(0, -13)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Feuille.Name
Sheets("relance").Range("G12").Value = Cel.Offset(0, -16)

End If
Next Cel
End If
Next Feuille
If ListBox1.ListIndex = -1 Then Exit Sub
MsgBox ListBox1.List(ListBox1.ListIndex)


End Sub

Re Merci
 

bqtr

XLDnaute Accro
Re : Problème ListBox

Bonjour,

J'ai modifié les USF 4 et 7 en fonction de ce que tu m'as dit (enfin j'espère).

Pour avoir les chiffres qui commencent par 0 dans les cellules fait ceci:

Sur une feuille excel:
Menu Outils/Options onglet "Vérification des erreurs",
décocher la ligne : "Nombre stocké en tant que texte", tu n'auras plus le petit triangle rouge en haut et à gauche de la cellule.

Il faut mettre ensuite la cellule au format TEXTE
Dans le Code, .NumberFormat = "@" permet de mettre la cellule au format texte. A placer avant de transférer le contenu dans la cellule.

PS: je retire le 1er fichier et je le remplace par celui-ci

A+
 

Pièces jointes

  • JA1 v7.zip
    180 KB · Affichages: 83

bqtr

XLDnaute Accro
Re : Problème ListBox

Re,

Le code que je t'ai fait était lié à ton premier fichier mis en PJ. (celui avec les feuilles 2009 et 2010).
Il était valable si tu faisais une recherche sur plusieurs feuilles, mais si tu travailles toujours sur la feuille de l'année en cours il n'est pas pas très adapté.

Si je comprends tu remplis la listbox à l'ouverture du USF avec la colonne Q(1ère colonne),A(2èmè col),C(3èmè col) et D(4èmè col).
Le nom de la feuille en 5èmè colonne est inutile si tu travailles sur la feuille de l'année en cours.

If ListBox1.ListIndex = -1 Then Exit Sub
MsgBox ListBox1.List(ListBox1.ListIndex)

Ces deux lignes sont inutiles.

Maintenant pour le code de ton bouton:
Que veux tu qu'il fasse ?
Sélectionner une élément de la listbox et transférer ce dernier sur la feuille "Relance" puis imprimer.
Quelle colonne doit être transférée, la 1 la 2 la 3 la 4 ?
La sélection dans la listbox peut-être multiple ou unique ?

A+


 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

Salut Bqtr
J'ai travaillé un peu sur mon fichier et j'ai constaté avec stupeur qu'il ne marchait plus au taf (Excel97), cela beug (incompatibilité de type 13) sur la ligne if left(feuille.name, 1) = 2 ...........
Dégouté... ici j'ai excel 2003

J'ai travaillé sur la partie recouvrement et tu constateras comment je me suis pris la tête sur les formules ....(écrite sur la feuille et non dans le code, regret...). Cela marche mais il doit y avoir mieux ....

Pour l'USF 7 et l'USF 9, l'édition doit se faire pour chaque fiche trouvée...
En effet pour l'USF 9, c'est sur la date d'exigibilité que je fais la recherche...

je t'envoie mon fichier sur ta boite, c'est mieux....
Encore merci, pour l'aide que tu m'apportes et des progrès que je fais grâce à toi....
A plus
 

bqtr

XLDnaute Accro
Re : Problème ListBox

Bonjour,

Voici une proposition pour le USF 9

Initialisation du USF :

Code:
Private Sub UserForm_Initialize()

With ListBox1
    .ColumnCount = 5
    .ColumnWidths = "2cm;3cm;3cm;1cm;1,5cm"
End With

Label2.Caption = Format(Date, "dd/mm/yyyy")
VSearch = Label2.Caption

With Sheets(CStr(Year(Date)))
    Derlig = .Range("Q" & Rows.Count).End(xlUp).Row
      For Each Cel In .Range("Q3:Q" & Derlig)
         If Cel = VSearch Then
            ListBox1.AddItem Cel.Value
            ListBox1.List(ListBox1.ListCount - 1, 1) = Cel.Offset(0, -14)
            ListBox1.List(ListBox1.ListCount - 1, 2) = Cel.Offset(0, -13)
            ListBox1.List(ListBox1.ListCount - 1, 3) = Cel.Offset(0, -16)
            ListBox1.List(ListBox1.ListCount - 1, 4) = Cel.Offset(0, -15)
         End If
      Next Cel
End With
 
End Sub

Code du bouton :

Code:
Private Sub CommandButton1_Click()

Dim k As Long

For k = 0 To ListBox1.ListCount - 1
   If ListBox1.Selected(k) Then
        With Sheets("relance")
          .Range("J1") = ListBox1.List(k, 0)
          .Range("I6") = ListBox1.List(k, 1) & " " & ListBox1.List(k, 2)
          .Range("G12") = ListBox1.List(k, 3)
          .Range("H12") = ListBox1.List(k, 4)
        End With
        Sheets("relance").PrintOut
   End If
Next

Sheets("relance").Range("J1,I6,G12,H12,B19") = ""

End Sub

Pour l'USF 7, La feuille "Avertissement" sera imprimée pour chaque fiche trouvée.

Pour l'erreur 13 sous Excel 97 là je ne sais pas. Regarde dans l'aide VBA si la fonction Left existe ou fait une recherche sur Worksheet. Si les recherches sont positives c'est peut-être le mot Feuille qui pose problème, dans ce cas modifie la variable Feuille par autre chose comme WS par exemple.

A+
 

pasmermayvir

XLDnaute Junior
Re : Problème ListBox

Salut bqtr,
Je reviens sur le forum (hier je ne pouvais pas bosser sur mon appli....)
Pour le problème de la version d'excel, je vérifierai Lundi au taf....
Pour l'USF 9, je veux adapter ton code et je te dirais...
Pour la partie recouvrement, as-tu une idée pour les formules et le code....
Peut-on simplifier tout çà....
Je te remercie pour tout ton travail
A+ Pasmermayvir
 

bqtr

XLDnaute Accro
Re : Problème ListBox

Bonjour,

Par recouvrement tu entends la feuille "Détails Paiements" et le USF 11 ?

J'ai rajouté des colonnes sur cette feuille car tu avais dans 1er paiement la date, dans 2ème paiement le montant et dans 3ème paiement le mode de paiement.
Maintenant tu as 3 colonnes pour chaque paiement (date, montant, mode de paiement.)

Dans le code du USF 11 tu faisais appel à une valeur d'un autre USF fermé. Ce n'est pas possible sauf à déclarer cette variable dans un module de code standard et à lui donner une valeur avant d'utiliser le USF 11.

Pour boucler sur les colonnes j'utilise une boucle Do While / Loop
J'ai remplacer le Label part une Combobox pour choisir le N°.
Quand tu sélectionnes un N° les données sont transférées sur la feuille "Détails Paiements".
Le Bouton d'impression est actif quand nécessaire.

A+
 

Pièces jointes

  • JA1 v11.zip
    24.2 KB · Affichages: 54

Discussions similaires

Réponses
8
Affichages
393

Membres actuellement en ligne

Statistiques des forums

Discussions
312 836
Messages
2 092 652
Membres
105 479
dernier inscrit
chaussadas.renaud