remplir combobox avec conditions date

C.K

XLDnaute Nouveau
par chafoo » Hier, 20:41

Bonsoir à tous les membres,

Je suis nouveau et j'aurais besoin de vôtre aide

Je suis entrain de réalisé un programme de gestion outils et j'ai presque fini hors mis ce petit point qui me bloque.

Donc j'ai fichier excel avec une base de donnée (perte des outils) c'est une feuille nommée "bdd1314" j'ai une colonne ou il y a des dates << c'est le jours ou la perte de l'outil à été déclarer>> Je voudrais comparer c'est dates qui sont en colonne "N3:N" vue que sa s'ajoute au fur à mesure donc faut pouvoir contrôler toutes les lignes et s'il y a des dates qui sont inférieurs à 48h par rapport à la date du jour genre "datedif ou NB SI" Je voudrais pouvoir afficher comme infos l'ID OUTILS colonne "C3:C" en fonction du nombre de lignes ( sa sera pour annuler une perte au cas ou on le retrouve) et que certains infos de la ligne viennent dans un userform et quand on valide, que la ligne en question selectionner grâce à la combobox soit couper et coller dans une autre feuille "Recap" qui est mon stock outils. Donc réaffecter au stock.

Je remercie d'avance tous ceux qui pourront qui pourront m'aider
si jamais vous comprenez pas ce que je demande et que vous voulez plus d'explications n'hésitez pas a me demander

Tout en sachant que les dates les plus récentes s'ajoute au bas de mon tableau c'est à dire y cherche la dernière lignes vides et rajoute la nouvelle, j'ai cette ligne de code sur mon autre userforme qui amener les infos sur la feuille "bdd1314"

PHP:
num = Sheets("bdd1314").[B65000].End(xlUp).Row + 1 'on part du bas de la colonne, on cherche
Sheets("bdd1314").Activate

j'ai pas mis tout mon fichier il est trop lourd et même compresser "chaud" donc je vous donne juste la partie ou j'ai des problèmes j’espère que vous comprendrez

Je vous remercie d'avance
 
Dernière édition:

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Re Bonjour,

J'ai essayé d'avancer sur mon problème j'ai utilisé un bout de code pour essayer de filtre ma combobox par rapport à la date

PHP:
Private Sub UserForm_Initialize()
Dim J As Long
  With Sheets("bdd1314")
    For J = 3 To .Range("N" & Rows.Count).End(xlUp).Row
      If .Range("N" & J) = "> AUJOURDHUI+2" Then
        Me.ComboBox1.AddItem .Range("B" & J)
      End If
    Next J
  End With
End Sub

et ça en changant la conditions date

PHP:
Private Sub UserForm_Initialize()
Dim J As Long
  With Sheets("bdd1314")
    For J = 3 To .Range("N" & Rows.Count).End(xlUp).Row
      If .Range("N" & J) = ">""&DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY())-2))" Then
        Me.ComboBox2.AddItem .Range("B" & J)
      End If
    Next J
  End With
End Sub

mais malheureusement rien ne s'affiche dans ma combobox

Je continue mais recherche :)
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir combobox avec conditions date

Bonjour CK, bonjour le forum,

En principe, quand on propose un fichier exemple, on évite tout ce qui peut modifier l'application (modification de l'affichage de certains éléments, suppression d'outils, etc.). J'ai pas trop aimé le Application.Visible = False. Je vais quand même jeter un coup d'œil sur ton fichier mais je te recommande vivement de le modifier pour le remplacer dans la pièce jointe et de prendre cette bonne habitude à l'avenir...
 

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Bonjour le Forum,

j'ai continué mais recherhce et j'ai reussi à trouvé quelque chose de similaire à mon cas sur le forum mais apparement m'a condition n'est pas prise en compte j'aurais besoin de vôtre lumière je joint un fichier pour être plus explicite. j'ai indiquer toutes les informations néccessaire à la compréhension de ce que je recherche dans le fichiers joint

mon probléme c'est que je voudrais afficher que les ligne d'on la date et comprise dans les dernière 48h pour l'instant sa m'affiche tout! voici le code utilisé

PHP:
Option Explicit

Private Sub UserForm_Initialize()
  Dim Dli As Long, Li As Long, t(), L As Long
  With Sheets("bdd1314")
    Dli = .Range("B" & Rows.Count).End(xlUp).Row + 2 '
    ReDim t(Dli, 3)
    For Li = 3 To Dli
      If .Cells(Li, "N") > "&DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY())-2))" Then
        t(L, 0) = .Cells(Li, "A")
        t(L, 1) = .Cells(Li, "B")
        t(L, 2) = .Cells(Li, "D")
        t(L, 3) = Format(.Cells(Li, "N"), "dd/mm/yyyy")
        L = L + 1
      End If
    Next
  End With
  ListBox1.List = t()
  
End Sub
Merci d'avance pour vos réponse
 

Pièces jointes

  • presentation.xlsm
    60.9 KB · Affichages: 24
Dernière édition:

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Bonjour Robert,

Je n'est pas trés bien compris t'a remarque, c'est concernant la mise en forme de mon fichiers excel je t'avourais que j'essaye de me débrouiller comme je peut n'étant pas une fléche en VBA et surtout débutant j'aimerais que tu m'explique un peut mieux étant donnée que je viens tout juste de posté un nouveau fichier et je ne voudrais pas refaire les même erreurs pour les réponse ou poste que je serait améné à faire.

Le Application.Visible = False, c'est un code que j'ai trouvé et que j'ai adapté mais je pense bien qu'il y a mieux à faire en terme de codage.

Merci pour t'es remarque qui ne pourront que me faire avancé.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir combobox avec conditions date

Bonjour CK, bonjour le forum,

Ce n'est pas la mise en forme que je critique. Ce que je voulais dire c'est que quand j'ai cliqué sur le bouton Ouvrir formulaire la ligne Application.Visible = False a fait son boulot et donc Excel est resté ouvert mais masqué. Je n'ai pas continué car je voulais lire le code de l'UserForm et je suis allé dans l'éditeur VBE. Quand j'ai voulu revenir à Excel, impossible. J'ai dû redémarrer mon PC pour que ça revienne en ordre car je n'ai pas l'habitude de travailler comme ça...
Il te suffisait de commenter la ligne de code (en mettant une apostrophe (') devant pour que cela ne se produise pas. Il faut éviter de modifier tout ce qui touche l'Application dans un fichier exemple car celui qui te vient en aide ne saura pas forcément rétablir les paramètres qu'il avait avant que tu lui imposes tes changements...
Est-ce plus clair là ?
 
Dernière édition:

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Bonjour le Forum,

Oui Robert c'est compris, je suis vraiment désolé! Je t'avourais que je ne comprennais pas pourquoi quand je lancé ma macro sa me fermé mon fichier excel et ca me le réouvré qu'une fois terminé ou il fallait que je relance le fichier excel, maintenant je comprend mieux d'ou vient le probléme. Je vais modifier ça tout de suite afin d'éviter à ce qui m'aiderons et ce qui voudrais s'appuyer sur mon fichier comme exemple de ne pas avoir la suprise. J'ai supprimer le 1er fichiers joint et modifier le deuxiéme que j'ai reposté

Merci pour l'eclaircissement Robert.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir combobox avec conditions date

Bonjour CK, bonjour le forum,

Attention tes TextBoxes ne se suivent pas ! Il y a une en double masquant celle du dessous. Je ne me souviens plus laquelle mais il te faut revoir ça dans on fichier car sinon le code qui boucle sur les 6 TextBoxes ne va pas fonctionner correctement!
J'ai corrigé dans le fichier en pìece jointe. J'ai aussi corrigé le code où tu rends l'onglet Feuil1 d'abord VeryHidden pour, deux lignes en dessous, le rendre Visible ???

Je pense à voir compris et résolu ton problème. Puisque tu filtres l'alimentation de la ComboBox2, tu ne peux plus utiliser la propriété ListIndex pour récupérer le numéro de ligne de la valeur affichée dans la ComboBox2. Pour pallier ce problème j'utilise deux colonnes dans la ComboBox2 dont la seconde et masquée. Je récupère la valeur dans la 1ère colonne (colonne 0) et le numéro de ligne dans la colonne masquée (colonne 1).
En pièce jointe ton fichier modifié avec les codes commentés.
le fichier :
 

Pièces jointes

  • CK_v01.xlsm
    71.1 KB · Affichages: 34
  • CK_v01.xlsm
    71.1 KB · Affichages: 36
  • CK_v01.xlsm
    71.1 KB · Affichages: 47

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Bonjour Robert et le forum,

Je regarde ce que tu m'a envoyé après mangé et je te fait un retour, merci pour t'a réponse rapide en ésperant qu'a l'avenir je ne pourrisse pas l'ordi de quelqu'un avec un fichier excel je j'aurai posté en fichier joint.

Bonne ap à toi.
 

MJ13

XLDnaute Barbatruc
Re : remplir combobox avec conditions date

Bonjour à tous

Pour restaurer Excel, voire Word, en cas de masquage de l'appli, vous pouvez créer un fichier VBS avec ce code en utilisant un éditeur de texte. Appelez le Affiche_Excel.vbs. Puis lancer le comme un . bat en double cliquant sur son icône.

Code:
 'XLcheck.vbs
' Find an invisible instance of Excel
' from Rob Bruce
Dim objXL,objWD, strMessage
On Error Resume Next
' Try to grab a running instance of Excel:
Set objXL = GetObject(, "Excel.Application")
Set objXL = GetObject(, "Excel.Application")
'Set objWD = GetObject(, "Word.Application")
'Set objWD = GetObject(, "Word.Application")
'objWD.Visible = true
objXL.Visible = true
objXL.Visible = true
sendkeys("~")
' End of VBS code
 

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Bonjour Mj13 et ReBonjour Robert,

Je te remercie Robert ca fonctionne comme je voulais en prennant bien en compte la conditions des 48h par contre j'ai modifié un nom de feuille dans le code car tu appellée la feuille "Recap" au lieu de "bdd1314" ce qui m'envoyer le msg d'erreurs que tu à intégré "Aucune accurrence trouvée !" c'etait du a l'inversion de c'est deux feuilles j'imagine

PHP:
Set REC = Sheets("Recap") 'définit l'onglet REC
par
PHP:
Set REC = Sheets("bdd1314") 'définit l'onglet REC

Je ne savais pas qu'on pouvait crée plusieurs ligne dans une combobox et encore moins les cacher :) excel est magique est je doit connaître que 4% de toutes c'est fonctionnalité.

par contre j'ai une derniere question pour arriver à mes fin. Tu me dit que je ne peut plus utilisé la "ListIndex" donc je ne voit pas comment supprimer la ligne et la copier dans la feuille "Recap" et si j'aimais c'est possible c'est de la rangé par rapport au numéro qui s'apelle (id outil affécté) numéro qui se trouve en colonne b dans la feuille "bdd1314" . exemple id outil =173 rechercher dans la feuille "Recap" ligne b le numero juste avant le 173 donc 172 afin de les rangé dans l'ordre croissant.

en tout cas merci Robert tous est vraiment bien éxpliquer ca fesait deux jours que j'étais dessus je reste vraiment admiratif :) des membres du forum qui prennent de leurs temps et partage leurs compétences.

Je poste mon fichier modifié comprenant le code sur lequel je travail afin de reussi a couper/coller la ligne actif grâce à la colonne 1 caché de ma combobox

MJ13 je te remercie pour ton code mais je pense que je vais suivre les conseils de Robert ne plus utilisé la ligne Application.Visible = False et si jamais j'en ai besoin je l'aurais

juste pour comprendre tu contre le faite que l'application soit invisible,tu la rend visible

Merci à vous en tout cas
 

Pièces jointes

  • CK_v01.xlsm
    74.2 KB · Affichages: 37
  • CK_v01.xlsm
    74.2 KB · Affichages: 43
  • CK_v01.xlsm
    74.2 KB · Affichages: 30

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir combobox avec conditions date

Bonjour le fil, bonjour le forum,

Non non CK, le code était bon mais je pense que je n'ai pas compris ce que toi tu voulais...
Voilà ce que fait le code, tu me diras ce que tu voudrais qu'il fasse :

• La Combobox2 filtre la colonne N de l'onglet bdd1314 et ne laisse apparaître que les données qui ont moins de 2 jours d'ancienneté. Dans ton dernier exemple ça correspond à la plage N11:N19.
• On sélectionne une donnée dans la ComboBox2 (par exemple 02024)
• la variable LIO renvoie le numéro de ligne de la données sélectionnée dans l'onglet bdd1314 (17
dans l'exemple)
• comme dans l'onglet Recap l'ID Outil perdu (= 02024 dans notre exemple) n'existe pas, j'ai pensé utiliser l'ID OUtil affecté qui correspond donc à B.Cells(LIO, 2).Value (= cellule, ligne LIO, colonne 2 (= B) de l'onglet B (= bdd1314). Dans note exemple il vaut : 00505
• je lance alors une recherche dans la colonne 2 (= B) de l'onglet Recap (et là c'est bien Recap et pas bdd1314 !) de la valeur 00505.

Malheureusement, parmi les 9 possibilités de ton dernier exemple, aucune des neuf ID Outil affecté {00499, 00500, ..., 00507} n'existe dans la colonne B de l'onglet Recap...


Il faudrait donc que tu détailles ce que tu veux que la macro fasse pour que nous puissions adapter le code. Parce ce que visiblement j'ai pas compris.

Par contre, je ne comprends encore moins quand tu me dis qu'en remplaçant Recap par bdd1314 ça marche !?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : remplir combobox avec conditions date

Bonjour le fil, bonjour le forum,

Je comprends mon incompréhension ! Les labels de ton UserForm correspondent aux étiquettes de colonne de l'onglet Recap et toi tu affiches les données de l'onglet bdd1314. Ça ne correspond absolument pas aux labels mais ça semble correspondre à ta demande.
J'ai donc fait très compliqué alors que c'était si simple mais en changeant les labels de l'Userform.
Ça m'apprendra à répondre à une demande bordélique... Une leçon apprise...
 

C.K

XLDnaute Nouveau
Re : remplir combobox avec conditions date

Bonjour le fil, bonjour le forum,

Désolé Robert si je me suis mal éxprime dans ma demande éffectivement les labels de mon UserForm correspond au colonne de ma feuille récap car dans la feuille "bdd1314" j'ai beaucoup plus d'infos que sur la feuille Recap, je penser que tu avait compris.
Ce que tu ma fait fonctionne trés bien, j'ai continué à travailler dessus j'arrive a supprimer la ligne en question dans la feuille "bdd1314"que j'ai séléctioné grâce à la combobox mais quand je la copie il n'y a que la textbox7 qui se copie et non les 7 textbox et ce que je voudrais c'est que l'id outil affecté supprime soit rangé par rapport a se numéro. Se numéro se trouve en colonne b dans la feuille "Recap" avec lequel tu t'es réferer Robert pour m'a premiere demande. exemple id outil =173 rechercher dans la feuille "Recap" colonne b le numero juste avant le 173 donc 172 afin de les rangé dans l'ordre croissant c'est à dire juste àpres.

En tout cas Merci pour ton aide et encore désolé si je me suis mal éxprimé je pensé que tu m'avait compris! A l'avenir j'essayerais d'être plus clair dans mes explication, afin de ne pas te faire perdre ton temps. Car si t'aurais compris dès le début t'aurais peut-être pu y passé moins de temps! :eek:
Merci encore pour ton aide !
 

Pièces jointes

  • CK_v01.xlsm
    71.3 KB · Affichages: 31
  • CK_v01.xlsm
    71.3 KB · Affichages: 42
  • CK_v01.xlsm
    71.3 KB · Affichages: 35

Discussions similaires

Réponses
6
Affichages
258

Statistiques des forums

Discussions
312 556
Messages
2 089 589
Membres
104 215
dernier inscrit
Jean Michl