Projet avec vba

inel94

XLDnaute Junior
Bonjour à tous,

Je suis sur un projet ou je dois réaliser un fichier excel et j'ai besoin de vba. Le soucis c'est que j'y connais rien du tout en programmation.
Mon premier problème c'est que j'ai 6 menu déroulants et qu'il y a des doublons et des cases vides.
Ensuite une fois que j'ai fais mes choix, je ne sais pas codé le bouton validé afin qu'il m'affiche les résultats.

Pour les menu déroulants, j'ai utilisé la fonction suivante:
Dim i
For i = 2 to 65536
ComboBox7.AddItem Sheets("Feuil2").Cells(i,1)
Next
Ca créer un menu déroulant pour la colonne A, pour les autres colonnes je ne sais pas faire :confused::confused:
Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonjour.
Dans mes noms de variables c'est T pour Tableau, L pour Ligne, C pour colonne, suivi de e pour Entrée, s pour Sortie.
Pourquoi 3 listes de péremptions alors que celle à 18 mois contiendra déjà toutes les autres ?
Il serait possible de n'en garder qu'une et de spécifier le délai ou le sélectionner par un bouton d'option. La procédure est déjà faite pour le lui passer en paramètre. Il serait aussi possible de reclasser la liste par dates, d'y ajouter une colonne l'indiquant pour chaque ligne, voire de mettre une ligne séparatrice quand on en change de tranche.
Je vois qu'il n'y a plus de CL.Add Me.CBx… dépourvue d'indication de colonne derrière, comme quand il fallait distinguer les éléments de la colonne Q contenant un M et/ou un P. Dans ce cas la Private Sub CL_SujBdDPersoSVP ne sert plus à rien, vous pouvez la supprimer.
 

inel94

XLDnaute Junior
Re : Projet avec vba

Oui effectivement j'ai changé la colonne Q et supprimé la Private Sub CL_SujBdDPersoSVP sur vos conseils.
Une liste avec un bouton option serait très bien mais je ne sais pas comment faire. Je sais les créer mais je ne comprends toujours pas comment vous faites pour créer l'affichage sur une liste après avoir fais un choix. C'est ce qui me pénalise le plus aujourd'hui.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonjour

Je ne sais pas trop vers quoi vous tendez en fait. Je ne comprends pas pourquoi il y a toujours encore un simple label pour toutes les colonnes de la fiche au lieu de TextBox qui leurs sont dédiés, afin que ça prenne enfin la forme d'un outil de mise à jour (il y avait bien à un moment un bouton "Mise à jour" ou j'ai rêvé ?).
Enfin… hier soir j'ai fait une version avec liste classée par dates et délai de péremption indiqués en clair.
Le plus simple serait de faire dépendre le contenu de la liste de tous les choix de ComboBox en passant la TLgnPéri en variable globale. Mais on pourrait certes récupérer la liste de numéros de lignes seulement de CL.Item(CBxEquipe).SujetBdD(1)
En attendant voyez déjà ce que ça donne comme ça.
 

Pièces jointes

  • CbxLiéesInel94.xls
    211.5 KB · Affichages: 37
  • CbxLiéesInel94.xls
    211.5 KB · Affichages: 42
  • CbxLiéesInel94.xls
    211.5 KB · Affichages: 47
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonjour.
Faute de commentaires de votre part je suppose que le principe est adopté.
La liste étant classée par dates de péremption, elle comportera toujours la même chose au début, quel que soit le délai maximum auquel on s'intéresse. Il est donc inutile de tenir compte de celui ci, puisque l'opérateur n'aura qu'à ne plus regarder au delà de ce qui ne l'intéresse plus. Dans cette version seuls les éléments correspondant aux choix incomplets sont affichés. Le délai de 18 mois ne sert plus qu'à limiter la taille de la liste quand rien n'est sélectionné.

Edit. Modifié la pièce jointe avec cerise sur le gâteau: possibilité de sélectionner une ligne de la liste.
La balle est dans votre camps, maintenant, pour transformer c'est Userform en interface de mise à jour en mettant un Label suivi d'une TextBox pour chaque colonne de donnée n'étant pas déjà le sujet d'une ComboBox, et des boutons d'exécution finale Ajouter, Modifier, Supprimer.
 

Pièces jointes

  • CbxLiéesInel94.xls
    239 KB · Affichages: 48
  • CbxLiéesInel94.xls
    239 KB · Affichages: 55
  • CbxLiéesInel94.xls
    239 KB · Affichages: 56
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Alors j'aimerais rajouté une petite listbox qui m'additionnerait la 2émé colonne de la LBxPérimés
Impossible: les textes de la 2ième colonne de LBxPérimés ne peuvent être convertis en nombres qu'on pourrait additionner.
Je peux le faire avec "Range" ou "SUM"?
Non. De toute façon pas, même en inventant toutes sortes d'interprétation possibles à votre demande, car on a déjà les informations en mémoire et on les parcourt toutes, déjà, dans la Sub GarnirListe, lors du remplissage, vers la fin, du tableau Ts à destination de la propriété List de la LBxPérimé (boucle While .Actif: Le = .Suivant: Ls = Ls + 1: etc.)
 

inel94

XLDnaute Junior
Re : Projet avec vba

Bonjour Dranreb. Merci pour l'info. du coup j'ai pas le choix j'abandonne cette option celle la.
Par contre j'ai tout exporter pour l'intégrer dans ma base de donnée mais j'ai un souci avec cette ligne "Ts(Ls, 2) = IIf(Te(Le, 5) <= Maintenant, "Depuis", "Dans") _
& " " & DuréeEnClair(Abs(Te(Le, 5) - Maintenant))".
Les seules choses qui ont changés ce sont les noms des colonnes par rapport à ce que vous m'aviez envoyé.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonjour.
Essayez comme ça :
VB:
While .Actif: Le = .Suivant: Ls = Ls + 1: TLgn(Ls) = Le
      Ts(Ls, 0) = Te(Le, 1)
      Ts(Ls, 1) = Te(Le, 4): If VarType(Te(Le, 5)) = vbDate Then _
      Ts(Ls, 2) = IIf(Te(Le, 5) <= Maintenant, "Depuis", "Dans") & " " _
         & DuréeEnClair(Abs(Te(Le, 5) - Maintenant)) Else Ts(Ls, 2) = "Indéterminable."
      Ts(Ls, 3) = Format(Te(Le, 5), "dd/mm/yyyy hh:mm"): Wend
 

inel94

XLDnaute Junior
Re : Projet avec vba

Tout marche nickel c'est parfait merci.
Je ne trouve pas la ligne qui me permet de choisir les dimension d'affichage du tableau. J'ai remarqué que la colonne rame du LBxPérimé était adapté pour un affichage de type "01B". Mais si j'ai par exemple "802531506", il n'apparaitra que les 4 premiers chiffres. Je sais pas si j'ai été assez claire.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Si vous renommez les 4 Label qui surmontent la ListBox en LabTit0 à LabTit3 vous pouvez mettre ça dans l'Userform_Initialize :
VB:
Dim TCW(0 To 2) As String, C As Long
For C = 0 To 2: TCW(C) = Me("LabTit" & C + 1).Left - Me("LabTit" & C).Left: Next C
LBxPérimé.ColumnWidths = Join(TCW, ";")
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33