VBA chercher date avec cbox dans plusieurs feuilles
Résolu/Fermé
lanetmel
Messages postés
200
Date d'inscription
mercredi 24 août 2011
Statut
Membre
Dernière intervention
15 mars 2018
-
10 mars 2013 à 21:25
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 17 mars 2013 à 09:20
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 17 mars 2013 à 09:20
A voir également:
- VBA chercher date avec cbox dans plusieurs feuilles
- Comment faire un livret avec des feuilles a4 - Guide
- Fusionner plusieurs feuilles excel en une seule - Guide
- Publipostage date inversée ✓ - Forum Word
- Publipostage date en anglais ✓ - Forum Excel
7 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 701
13 mars 2013 à 22:35
13 mars 2013 à 22:35
Bonjour,
Conformément à ce que tu voulais, je t'ai fait une plage de paramètres, avec les noms des feuilles qui sont affichés par fonction. Il suffit d'y associer le nom d'employé correspondant et son statut.
Le formulaire n'affiche que les employés actifs et leurs heures quand la date est choisie. Cela permet de rajouter ou supprimer des employés sans toucher au formulaire et même de changer les noms des feuilles. ;-)
https://www.cjoint.com/c/CCnwBLYKXW5
J'espère que mon code assez basique ne va pas t'effrayer.
Le format de tes heures n'étant pas homogène le formatage d'affichage est un peu complexe...
Bon test.
Conformément à ce que tu voulais, je t'ai fait une plage de paramètres, avec les noms des feuilles qui sont affichés par fonction. Il suffit d'y associer le nom d'employé correspondant et son statut.
Le formulaire n'affiche que les employés actifs et leurs heures quand la date est choisie. Cela permet de rajouter ou supprimer des employés sans toucher au formulaire et même de changer les noms des feuilles. ;-)
https://www.cjoint.com/c/CCnwBLYKXW5
J'espère que mon code assez basique ne va pas t'effrayer.
Le format de tes heures n'étant pas homogène le formatage d'affichage est un peu complexe...
Bon test.
eriiic
Messages postés
24597
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2024
7 235
Modifié par eriiic le 10/03/2013 à 23:05
Modifié par eriiic le 10/03/2013 à 23:05
Bonsoir,
Pas sûr que tu aies fait un bon choix en mettant tous les noms dans le userbox.
Si demain tu as 3 personnes de plus tu redessines tout et tu rallonges le code partout où ça sera nécessaire ?
Moi je me créerai une liste dans une feuille Paramètres avec les noms à afficher et les noms des feuilles correspondantes.
Elle servirait à initialiser une listbox ou une combobox pour choisir dans le formulaire.
Sinon :
Ensuite si tu veux la colonne M utilises :
Dim shEmp as worksheet
set shEmp = worksheets("PATC")
shEmp .cells(c.row,"M") = xxx ' ou var1= shEmp .cells(c.row,"M")
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Pas sûr que tu aies fait un bon choix en mettant tous les noms dans le userbox.
Si demain tu as 3 personnes de plus tu redessines tout et tu rallonges le code partout où ça sera nécessaire ?
Moi je me créerai une liste dans une feuille Paramètres avec les noms à afficher et les noms des feuilles correspondantes.
Elle servirait à initialiser une listbox ou une combobox pour choisir dans le formulaire.
Sinon :
Dim date1 As Date, c As Range date1 = DateValue("19/01/2013") Set c = Columns(2).Find(date1, LookIn:=xlValues)
Ensuite si tu veux la colonne M utilises :
Dim shEmp as worksheet
set shEmp = worksheets("PATC")
shEmp .cells(c.row,"M") = xxx ' ou var1= shEmp .cells(c.row,"M")
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 701
10 mars 2013 à 23:46
10 mars 2013 à 23:46
Bonjour,
Comme Éric (un petit coucou), je pense que ton formulaire va te faire galérer.
Tout d'abord tes noms d'objets du formulaire ne sont pas rigoureux (espaces, majuscules,etc) et différents parfois des feuilles.
D'autre part, ton classeur est en 1904 pour les heures négatives mais la recherche avec le formulaire se décale de 4 ans sur les dates.
Tes heures sont tantôt au format heure tantôt au format décimal.
Je t'ai fait un petit bout de code en corrigeant un peu pour te faire voir ce que l'on peut faire mais cela ne va pas être simple avec ce classeur :
https://www.cjoint.com/?3CkxMag0Opg
Comme Éric (un petit coucou), je pense que ton formulaire va te faire galérer.
Tout d'abord tes noms d'objets du formulaire ne sont pas rigoureux (espaces, majuscules,etc) et différents parfois des feuilles.
D'autre part, ton classeur est en 1904 pour les heures négatives mais la recherche avec le formulaire se décale de 4 ans sur les dates.
Tes heures sont tantôt au format heure tantôt au format décimal.
Je t'ai fait un petit bout de code en corrigeant un peu pour te faire voir ce que l'on peut faire mais cela ne va pas être simple avec ce classeur :
https://www.cjoint.com/?3CkxMag0Opg
lanetmel
Messages postés
200
Date d'inscription
mercredi 24 août 2011
Statut
Membre
Dernière intervention
15 mars 2018
4
12 mars 2013 à 01:33
12 mars 2013 à 01:33
Bonjour à vous deux
merci beaucoup de vos réponses.. Désolé de ne pas avoir répondu avant, j'ai eu une grosse journée.. J'avoue que vous avez tous les 2 raisons et je veux suivre vos conseils.. Seulement juste pour me partir j'aurais besoin de quelques infos :
ok pour faire une feuille paramètre.. dans cette feuille je pensais y mettre 3 colonnes
A = le nom d'employé
B = nom de la feuille correspondant au nom de l'employé de la colonne A
C = statut de l'employé : actif ou inactif
C'est dans mon usf que je suis pas certaine.. Si je fais un listbox, je peux pas rajouter mes textbox à emplir manuellement? Dans le genre que j'avais prévu au départ?
si je mets des Cbox..est il possible de les faire s'emplir toute seule en demandant de ne prendre que la liste des employé actifs de la feuille paramètre ?
Ensuite je pourrais mettre que si la cbox >"" les textbox apparaissent..
Aussi je sais pas si c'est moi mais j'ai regardé ton fichier gbinforme et j'ai pas vu les changements..
merci encore, votre aide est très appréciée
Mélanie
merci beaucoup de vos réponses.. Désolé de ne pas avoir répondu avant, j'ai eu une grosse journée.. J'avoue que vous avez tous les 2 raisons et je veux suivre vos conseils.. Seulement juste pour me partir j'aurais besoin de quelques infos :
ok pour faire une feuille paramètre.. dans cette feuille je pensais y mettre 3 colonnes
A = le nom d'employé
B = nom de la feuille correspondant au nom de l'employé de la colonne A
C = statut de l'employé : actif ou inactif
C'est dans mon usf que je suis pas certaine.. Si je fais un listbox, je peux pas rajouter mes textbox à emplir manuellement? Dans le genre que j'avais prévu au départ?
si je mets des Cbox..est il possible de les faire s'emplir toute seule en demandant de ne prendre que la liste des employé actifs de la feuille paramètre ?
Ensuite je pourrais mettre que si la cbox >"" les textbox apparaissent..
Aussi je sais pas si c'est moi mais j'ai regardé ton fichier gbinforme et j'ai pas vu les changements..
merci encore, votre aide est très appréciée
Mélanie
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 701
Modifié par gbinforme le 12/03/2013 à 08:35
Modifié par gbinforme le 12/03/2013 à 08:35
Bonjour lanetmel,
j'ai pas vu les changements..
Quand tu choisis ta date les 2 premières colonnes du formulaire sont documentées...
pas très bien certes car les formats de données sont assez disparates.
Au lieu de passer ton temps à créer tes textbox et labels de manière figée, tu peux très bien avoir l'apparition des seuls objets utiles en fonction de tes paramètres.
Si tu veux, je peux te faire un départ pour te permettre de voir ce que cela donne.
j'ai pas vu les changements..
Quand tu choisis ta date les 2 premières colonnes du formulaire sont documentées...
pas très bien certes car les formats de données sont assez disparates.
Au lieu de passer ton temps à créer tes textbox et labels de manière figée, tu peux très bien avoir l'apparition des seuls objets utiles en fonction de tes paramètres.
Si tu veux, je peux te faire un départ pour te permettre de voir ce que cela donne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lanetmel
Messages postés
200
Date d'inscription
mercredi 24 août 2011
Statut
Membre
Dernière intervention
15 mars 2018
4
13 mars 2013 à 00:02
13 mars 2013 à 00:02
Bonjour Gbinforme
Excuse moi, j'ai dû regarder avec mes oreilles! J'ai vraiment regardé pour travailler sur l'option que vous m'avez proposé pour une version long terme mais ça semble trop compliqué pour moi.. je vois pas comment y arriver alors je vais continuer avec mon idée du départ.. Quand je serai meilleure, je le retravaillerai (si jamais ça arrive..je trouve que je ne progresse pas vite..)
Déjà j'ai regardé attentivement ton code et je n'en comprend que très peu.. J'ai vu que ça fonctionnais :) ... Je suis aller dans mes feuilles et j'ai mis toutes mes cellules en format heure : [h]:mm:ss
par contre quand j'ouvre le usf, les données heures et date s'affiche dans un autre format... J'ai essayé de mettre ce code :
Private Sub UserForm_Initialize()
Dim c() As Variant, i As Byte
c = Array("Tbox_hrsRMiguel", "Tbox_hrsRPatC", "Tbox_hrsRDany", "Tbox_hrsRMad")
For i = LBound(c) To UBound(c)
With Me.Controls(c(i)).Value = Format(Me.Controls(c(i)), "hh:mm:ss")
End With
Next i
End Sub
Bien sûr il vient pas de moi.. je l'ai trouvé sur internet.. c'étais pour mettre une couleur de fond dans certaines textbox d'un usf mais pas toutes.. Alors je l'ai modifié un peu.. (j'ai pas mis le nom de toutes les textbox que je veux mettre tout de suite.. je le complètrerai quand ça fonctionnera)
As-tu une idée par hasard comment faire pour changer le format?
encore un énorme merci
Mélanie
Excuse moi, j'ai dû regarder avec mes oreilles! J'ai vraiment regardé pour travailler sur l'option que vous m'avez proposé pour une version long terme mais ça semble trop compliqué pour moi.. je vois pas comment y arriver alors je vais continuer avec mon idée du départ.. Quand je serai meilleure, je le retravaillerai (si jamais ça arrive..je trouve que je ne progresse pas vite..)
Déjà j'ai regardé attentivement ton code et je n'en comprend que très peu.. J'ai vu que ça fonctionnais :) ... Je suis aller dans mes feuilles et j'ai mis toutes mes cellules en format heure : [h]:mm:ss
par contre quand j'ouvre le usf, les données heures et date s'affiche dans un autre format... J'ai essayé de mettre ce code :
Private Sub UserForm_Initialize()
Dim c() As Variant, i As Byte
c = Array("Tbox_hrsRMiguel", "Tbox_hrsRPatC", "Tbox_hrsRDany", "Tbox_hrsRMad")
For i = LBound(c) To UBound(c)
With Me.Controls(c(i)).Value = Format(Me.Controls(c(i)), "hh:mm:ss")
End With
Next i
End Sub
Bien sûr il vient pas de moi.. je l'ai trouvé sur internet.. c'étais pour mettre une couleur de fond dans certaines textbox d'un usf mais pas toutes.. Alors je l'ai modifié un peu.. (j'ai pas mis le nom de toutes les textbox que je veux mettre tout de suite.. je le complètrerai quand ça fonctionnera)
As-tu une idée par hasard comment faire pour changer le format?
encore un énorme merci
Mélanie
lanetmel
Messages postés
200
Date d'inscription
mercredi 24 août 2011
Statut
Membre
Dernière intervention
15 mars 2018
4
14 mars 2013 à 21:04
14 mars 2013 à 21:04
Bonjour Gbinforme,
Ayoye! C'est vraiment bien fait! Avec cette méthode je vais pouvoir tout changer en 3 petites secondes s'il y lieu..
MERCI BEAUCOUP!!!!!
J'ai rapidement regarder ton code.. je vais l'imprimer pour essayer de le comprendre et te reviendrai avec des questions si je comprends pas..
Ensuite il me restera à ajouter un code pour le bouton ok.. Je veux que ça aille porter dans les feuilles correspondantes, aux lignes correspondantes les données entrées manuellement dans les textbox.. Je vais essayer de le faire moi-même et reviendrai sur le forum si cela ne fonctionne pas.. Je pense pas Être capable d'y arriver mais je veux au moins essayer :)
encore merci beaucoup pour te temps que tu m'as consacré c'est très apprécié
Mélanie
Ayoye! C'est vraiment bien fait! Avec cette méthode je vais pouvoir tout changer en 3 petites secondes s'il y lieu..
MERCI BEAUCOUP!!!!!
J'ai rapidement regarder ton code.. je vais l'imprimer pour essayer de le comprendre et te reviendrai avec des questions si je comprends pas..
Ensuite il me restera à ajouter un code pour le bouton ok.. Je veux que ça aille porter dans les feuilles correspondantes, aux lignes correspondantes les données entrées manuellement dans les textbox.. Je vais essayer de le faire moi-même et reviendrai sur le forum si cela ne fonctionne pas.. Je pense pas Être capable d'y arriver mais je veux au moins essayer :)
encore merci beaucoup pour te temps que tu m'as consacré c'est très apprécié
Mélanie
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 701
14 mars 2013 à 22:14
14 mars 2013 à 22:14
Bonjour Mélanie,
Merci du retour et de ta gentille appréciation qui me fait bien plaisir.
Je pense pas Être capable d'y arriver mais je veux au moins essayer
Il ne faut pas être trop pessimiste, tu vas y arriver !
Lors de l'affichage, il faudrait conserver le numéro de ligne et ensuite l'enregistrement des données entrées manuellement est très facile à mettre en place, par exemple :
Ensuite la validation connait la feuille dans le label .tag et la ligne dans ligs(idx)
Bon courage et surtout n'hésites pas à revenir nous dire ton succès !
Merci du retour et de ta gentille appréciation qui me fait bien plaisir.
Je pense pas Être capable d'y arriver mais je veux au moins essayer
Il ne faut pas être trop pessimiste, tu vas y arriver !
Lors de l'affichage, il faudrait conserver le numéro de ligne et ensuite l'enregistrement des données entrées manuellement est très facile à mettre en place, par exemple :
en réservation globale Dim ligs() ' lignes choisies et après If .Cells(Lig, 2).Value = choix Then ReDim Preserve ligs(idx) ligs(idx) = Lig
Ensuite la validation connait la feuille dans le label .tag et la ligne dans ligs(idx)
Bon courage et surtout n'hésites pas à revenir nous dire ton succès !
lanetmel
Messages postés
200
Date d'inscription
mercredi 24 août 2011
Statut
Membre
Dernière intervention
15 mars 2018
4
16 mars 2013 à 23:00
16 mars 2013 à 23:00
Bonjour Gbinforme
J'ai regardé ton code durant plusieurs heures et je n'y comprend pas grand chose.. Quand j'essaie de continuer et que je regarde le code que tu m'as gentiment donné pour me partir..Je suis dans le désert.. peu importe ou je met
If .Cells(Lig, 2).Value = choix Then
ReDim Preserve ligs(idx)
ligs(idx) = Lig
ça me donne une erreur à cause du cells.. et comme je ne comprends pas grand chose a presque l'ensemble du code.. je suis perdue..
encore un coup de main? svp
Mélanie
J'ai regardé ton code durant plusieurs heures et je n'y comprend pas grand chose.. Quand j'essaie de continuer et que je regarde le code que tu m'as gentiment donné pour me partir..Je suis dans le désert.. peu importe ou je met
If .Cells(Lig, 2).Value = choix Then
ReDim Preserve ligs(idx)
ligs(idx) = Lig
ça me donne une erreur à cause du cells.. et comme je ne comprends pas grand chose a presque l'ensemble du code.. je suis perdue..
encore un coup de main? svp
Mélanie
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 701
16 mars 2013 à 23:57
16 mars 2013 à 23:57
Bonjour Mélanie,
Si j'ai bien compris, tu veux enregistrer les 6 textbox suivant les 2 affichées dans la même ligne que tu as récupéré les deux premières mais sur d'autres colonnes.
Si c'est bien cela, je t'ai codé le bouton OK mais j'ai choisi les colonnes inutilisées à droite et j'ai fait l'essai sur Miguel.
Il te suffit de remplacer la colonne BQ et suivantes par celles que tu as choisi car je n'ai pas du tout analysé tes tableaux qui ne me concernent pas pour leur contenu.
https://www.cjoint.com/c/CCqx2nFY5x1
Je t'ai mis des commentaires plus précis dans le code afin que tu comprennes le fonctionnement. N'hésites pas à préciser ce qui n'est pas clair.
Si j'ai bien compris, tu veux enregistrer les 6 textbox suivant les 2 affichées dans la même ligne que tu as récupéré les deux premières mais sur d'autres colonnes.
Si c'est bien cela, je t'ai codé le bouton OK mais j'ai choisi les colonnes inutilisées à droite et j'ai fait l'essai sur Miguel.
Il te suffit de remplacer la colonne BQ et suivantes par celles que tu as choisi car je n'ai pas du tout analysé tes tableaux qui ne me concernent pas pour leur contenu.
https://www.cjoint.com/c/CCqx2nFY5x1
Je t'ai mis des commentaires plus précis dans le code afin que tu comprennes le fonctionnement. N'hésites pas à préciser ce qui n'est pas clair.
lanetmel
Messages postés
200
Date d'inscription
mercredi 24 août 2011
Statut
Membre
Dernière intervention
15 mars 2018
4
17 mars 2013 à 00:42
17 mars 2013 à 00:42
bonjour Gbinforme,
c'est merveilleux! ça fait exactement tout ce dont j'ai besoin.. Grâce à ton aide je vais sauver un temps précieux à chaque semaine tout en minimisant le risque d'erreur..
merci aussi pour les précisions dans ton code.. c'est plus clair comme ça, je dis pas que je comprends tout mais ça va beaucoup m'aider .. je ferai des recherche sur certaines fonctions que tu as utilisés que je ne connaissais pas.. Si j'ai besoin de précision, je te reviendrai mais je pense que les notes ont déjà répondu à quelques unes de mes interrogations
encore merci pour ton aide :)
Mélanie
c'est merveilleux! ça fait exactement tout ce dont j'ai besoin.. Grâce à ton aide je vais sauver un temps précieux à chaque semaine tout en minimisant le risque d'erreur..
merci aussi pour les précisions dans ton code.. c'est plus clair comme ça, je dis pas que je comprends tout mais ça va beaucoup m'aider .. je ferai des recherche sur certaines fonctions que tu as utilisés que je ne connaissais pas.. Si j'ai besoin de précision, je te reviendrai mais je pense que les notes ont déjà répondu à quelques unes de mes interrogations
encore merci pour ton aide :)
Mélanie
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 701
17 mars 2013 à 09:20
17 mars 2013 à 09:20
Bonjour Mélanie,
Merci du retour sympathique qui commence bien ma journée.
je ferai des recherche sur certaines fonctions
La recherche la plus simple et la plus efficace est de sélectionner la fonction et de faire F1 : l'aide excel te donne le principe et son paramétrage, avec éventuellement des exemples.
Je n'ai utilisé que des fonctions assez basiques sauf peut-être la gestion des contrôles textbox qui en standardisant leur nomination permet de les gérer facilement avec très peu de code et moins il y a de code, moins il y a de risque d'erreur !
Il faudrait sans doute rajouter un contrôle des saisies textbox pour ne pas recopier dans la feuille si absence de saisie.
Bonne utilisation et au plaisir de te revoir.
Merci du retour sympathique qui commence bien ma journée.
je ferai des recherche sur certaines fonctions
La recherche la plus simple et la plus efficace est de sélectionner la fonction et de faire F1 : l'aide excel te donne le principe et son paramétrage, avec éventuellement des exemples.
Je n'ai utilisé que des fonctions assez basiques sauf peut-être la gestion des contrôles textbox qui en standardisant leur nomination permet de les gérer facilement avec très peu de code et moins il y a de code, moins il y a de risque d'erreur !
Il faudrait sans doute rajouter un contrôle des saisies textbox pour ne pas recopier dans la feuille si absence de saisie.
Bonne utilisation et au plaisir de te revoir.