Excel VBA
Fermé
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
-
Modifié par mido_ing le 11/12/2014 à 22:29
mido_ing Messages postés 8 Date d'inscription jeudi 11 décembre 2014 Statut Membre Dernière intervention 15 décembre 2014 - 15 déc. 2014 à 17:11
mido_ing Messages postés 8 Date d'inscription jeudi 11 décembre 2014 Statut Membre Dernière intervention 15 décembre 2014 - 15 déc. 2014 à 17:11
A voir également:
- Excel VBA
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
6 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
11 déc. 2014 à 22:14
11 déc. 2014 à 22:14
Bonjour,
tu peux mettre en forme le code dans ton post avec l'icone '<>' parce que là c'est indigeste.
Mieux encore, déposer un fichier xls sur cjoint.com et coller ici le lien fourni.
Et soit plus précis.
pour ne pas avoir à coder chaque possibilité de ressource...
C'est quoi ça ?
Plus la demande est agréable et bien expliquée en détail, plus tu as de chance d'intéresser qq'un.
eric
tu peux mettre en forme le code dans ton post avec l'icone '<>' parce que là c'est indigeste.
Mieux encore, déposer un fichier xls sur cjoint.com et coller ici le lien fourni.
Et soit plus précis.
pour ne pas avoir à coder chaque possibilité de ressource...
C'est quoi ça ?
Plus la demande est agréable et bien expliquée en détail, plus tu as de chance d'intéresser qq'un.
eric
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
950
11 déc. 2014 à 22:14
11 déc. 2014 à 22:14
Salut le Forum
Merci de joindre un fichier en utilisant https://www.cjoint.com/
et recopie le lien fourni dans ton prochain message.
Mytå
Merci de joindre un fichier en utilisant https://www.cjoint.com/
et recopie le lien fourni dans ton prochain message.
Mytå
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
11 déc. 2014 à 22:30
11 déc. 2014 à 22:30
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
Modifié par eriiic le 12/12/2014 à 00:06
Modifié par eriiic le 12/12/2014 à 00:06
Déjà il faut supprimer tes fusions de cellules sur les jours qui gênent.
Souvent totalement inutiles, tu peux agrandir la ligne 1 et 'centrer sur plusieurs colonnes'
Ensuite :
Sub CommandButton1_Click()
'
Dim lig As Long, col As Long
lig = [A:A].Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole).Row
col = [1:1].Find(ComboBox3, LookIn:=xlValues, lookat:=xlWhole).Column
te donne la position qui t'intéresse.
Avec cells(lig,col).offset(offset_ligne, offset_colonne) tu peux atteindre les cellules qui t'intéressent.
Le début : https://www.cjoint.com/c/DLmamtkSTGt
Attention, j'ai supprimé la ligne 2, tiens en compte pour tes positions de cellules.
eric
PS: désolé, la mise en forme du code est en panne...
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Souvent totalement inutiles, tu peux agrandir la ligne 1 et 'centrer sur plusieurs colonnes'
Ensuite :
Sub CommandButton1_Click()
'
Dim lig As Long, col As Long
lig = [A:A].Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole).Row
col = [1:1].Find(ComboBox3, LookIn:=xlValues, lookat:=xlWhole).Column
te donne la position qui t'intéresse.
Avec cells(lig,col).offset(offset_ligne, offset_colonne) tu peux atteindre les cellules qui t'intéressent.
Le début : https://www.cjoint.com/c/DLmamtkSTGt
Attention, j'ai supprimé la ligne 2, tiens en compte pour tes positions de cellules.
eric
PS: désolé, la mise en forme du code est en panne...
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
12 déc. 2014 à 16:06
12 déc. 2014 à 16:06
Merci beaucoup pour ta réponse, mais bon peut-être c'est parce que je suis débutant en VBA mais je ne vois pas comment avec les lignes de codes que tu m'a rajouté je vais réussir à avoir une boucle qui couvre toutes mes alternatives de choix de ressources et de journées tout en couvrant toutes les plages sans que ce soit un code roman, mais bon lorsque j'exécute ton code j'ai une erreur de compilation bizarre. C'est très floue pour moi je n'arrive pas à l'intégrer avec le reste du code pour avoir le résultat escompté et jai passé quelques heures à essayer de le décortiquer et jouer avec la portion de code que tu m'a rajouté tout en la complétant mais NADA :(
Merci l'ami !
Merci l'ami !
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
12 déc. 2014 à 18:45
12 déc. 2014 à 18:45
Exemple complété en mettant l'heure, en fusionnant une plage et la colorant.
Ca t'éclairera un peu plus pour commencer
Ca sert à quoi de défusionner pour refusionner juste après ? Ca m'intrigue.
Je ne vais pas tout te faire. Il faudrait décortiquer ton code (d'ailleurs tu pourrais nommer tes textbox qu'on sache directement à quoi on a affaire) alors que tu pourrais simplement expliquer.
https://www.cjoint.com/?DLmsUlUA7uS
eric
Ca t'éclairera un peu plus pour commencer
Ca sert à quoi de défusionner pour refusionner juste après ? Ca m'intrigue.
Je ne vais pas tout te faire. Il faudrait décortiquer ton code (d'ailleurs tu pourrais nommer tes textbox qu'on sache directement à quoi on a affaire) alors que tu pourrais simplement expliquer.
https://www.cjoint.com/?DLmsUlUA7uS
eric
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
12 déc. 2014 à 20:33
12 déc. 2014 à 20:33
Regarde j'ai fait une petite modif dans ton code , car le but c'est de fusionner le nombre de cellule en fonction du nombre d'heure. Car dans une journée pour un employé il faudrait que je puisse effectuer plusieurs activités donc la fusion des cellules devient importante. Lorsque tu veux refaire une horaire pour une nouvelle semaine et que tu part d'une grille déja pleine de ce qui avait été cédulé la semaine d'avant et bien lorsque tu met exemple 4h le lundi matin et que précédément c'était fusionné pour 8h et bien ca ne marchait pas. voilà pourquoi je défusionner avant de refussioner ;) . Mais sinon j'ai mis un bouton effacer qui permet d'effacer toute la grille, je crois que ce sera plus efficace.
Mais j'ai un autre petit souci, tu vois il faudrait que je puisse fusionner la colonne heures et détails proportionnelement à celle de job. Comme le tout est déclencher en fonction de la valeur dans mon combobox2 (nbr d'heures) j' ai un peu de difficulté avec la syntaxe que tu ma mis pour l'attribuer sur les deux autre colonnes. C'est peut-être du fait que je ne pige que dal à ces deux lignes de codes lolll
lig = [A:A].Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole).Row
col = [1:1].Find(ComboBox3, LookIn:=xlValues, lookat:=xlWhole).Column
Mais bon on est pas loin du résultat finale, ton aide est plus qu'apprécié l'ami !!
Voilà le lien avec un exemple du résultat final et avec mes modifs
http://www.cjoint.com/14dc/DLmuNHP0yIB.htm
Merci beaucoup Éric :)
Mais j'ai un autre petit souci, tu vois il faudrait que je puisse fusionner la colonne heures et détails proportionnelement à celle de job. Comme le tout est déclencher en fonction de la valeur dans mon combobox2 (nbr d'heures) j' ai un peu de difficulté avec la syntaxe que tu ma mis pour l'attribuer sur les deux autre colonnes. C'est peut-être du fait que je ne pige que dal à ces deux lignes de codes lolll
lig = [A:A].Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole).Row
col = [1:1].Find(ComboBox3, LookIn:=xlValues, lookat:=xlWhole).Column
Mais bon on est pas loin du résultat finale, ton aide est plus qu'apprécié l'ami !!
Voilà le lien avec un exemple du résultat final et avec mes modifs
http://www.cjoint.com/14dc/DLmuNHP0yIB.htm
Merci beaucoup Éric :)
Sub CommandButton1_Click()
Dim i As Integer
'CONRAD : LUNDI 8 heures
Dim lig As Long, col As Long
lig = [A:A].Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole).Row
col = [1:1].Find(ComboBox3, LookIn:=xlValues, lookat:=xlWhole).Column
' mettre valeur
Cells(lig, col).Offset(, 1) = ComboBox2
For i = 1 To ComboBox2.Value
With Cells(lig, col).Resize(i)
' fusionner
.Merge
' couleur
Select Case ComboBox4
Case "Client"
.Interior.Color = RGB(153, 204, 255)
Case "Location"
.Interior.Color = RGB(255, 255, 0)
Case "Vente"
Interior.Color = RGB(153, 204, 0)
Case "Service"
Interior.Color = RGB(255, 204, 0)
Case "Abscent"
Interior.Color = RGB(192, 192, 192)
End Select
End With
Next
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
>
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
12 déc. 2014 à 22:14
12 déc. 2014 à 22:14
Salut bon je me suis beaucoup avancé, grâce à ton coup de pouce, j'ai réussi a décortiquer tes fonctions au final elles sont super simple, mais sincèrement je n' y aurai jamais pensé.
Mais J'ai quelques petits soucis avec une boucle que j'ai instauré pour pouvoir mettre à l'horaire, plusieurs activités pour la même ressource, dans la même journée et le tout pour un maximum de 8hrs bien sûre.
Du moindrement que j'essaye de booker plus de 3 activités il y a des bug au niveau du formatage. Ou même booker 3 activité de la même catégorie mais avec un détail différent
Exemple: 2h client, 2h location, 4h vente
Exemple : 2h client (Détails 1234), 2h client (Détail 4321), client 2h (Détail 54342)
Si quelqu'un peut jeter un coup d'oeil sur les boucles de vérification de cellule et m'aider à l'optimiser car je bloque.
Merci l'ami
Dernier update https://www.cjoint.com/?DLmwuWaXfXF https://www.cjoint.com/?DLmwuWaXfXF
'
Mais J'ai quelques petits soucis avec une boucle que j'ai instauré pour pouvoir mettre à l'horaire, plusieurs activités pour la même ressource, dans la même journée et le tout pour un maximum de 8hrs bien sûre.
Du moindrement que j'essaye de booker plus de 3 activités il y a des bug au niveau du formatage. Ou même booker 3 activité de la même catégorie mais avec un détail différent
Exemple: 2h client, 2h location, 4h vente
Exemple : 2h client (Détails 1234), 2h client (Détail 4321), client 2h (Détail 54342)
Si quelqu'un peut jeter un coup d'oeil sur les boucles de vérification de cellule et m'aider à l'optimiser car je bloque.
Merci l'ami
Dernier update https://www.cjoint.com/?DLmwuWaXfXF https://www.cjoint.com/?DLmwuWaXfXF
'
Fonction de vérification si la cellule es fusionné (Fonction test)
Function IsMerged(rCell As Range) As Boolean
' Returns true if referenced cell is Merged
IsMerged = rCell.MergeCells
End Function
Sub CommandButton1_Click()
Dim i As Integer
Dim y As Integer
Dim iMax As Integer
'CONRAD : LUNDI 8 heures
Dim lig As Long, col As Long
lig = [A:A].Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole).Row
col = [1:1].Find(ComboBox3, LookIn:=xlValues, lookat:=xlWhole).Column
' mettre valeur
Cells(lig, col).Offset(, 1) = ComboBox2
Cells(lig, col).Offset(, 2) = TextBox1
'Vérification de cellules vide pour remplir le reste de la plage libre de la journée avec un Maximum de 8h à céduler
iMax = lig + 7
For y = lig To (lig + ComboBox2.Value) And (y <= iMax)
If IsMerged(Cells(lig, col)) Then
lig = lig + 1
Else:
Exit For
End If
Next
'Boucle pour remplir la colonne Job et détail en fonction du nombre d'heures sélectionnés
For i = 1 To ComboBox2.Value And (lig + ComboBox2.Value - 1) <= iMax
With Cells(lig, col).Resize(i)
' fusionner
.Merge
.Value = ComboBox4.Value
' couleur
Select Case ComboBox4
Case "Client"
.Interior.Color = RGB(153, 204, 255)
Case "Location"
.Interior.Color = RGB(255, 255, 0)
Case "Vente"
.Interior.Color = RGB(153, 204, 0)
Case "Service"
.Interior.Color = RGB(255, 204, 0)
Case "Abscent"
.Interior.Color = RGB(192, 192, 192)
End Select
End With
With Cells(lig, col + 1).Resize(i)
' fusionner
.Merge
.Value = ComboBox4.Value
' couleur
End With
With Cells(lig, col + 2).Resize(i)
' fusionner
.Merge
.Value = TextBox1.Value
' couleur
End With
Next
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
12 déc. 2014 à 22:55
12 déc. 2014 à 22:55
Ok mais j'avais commencé à travailler avec ton ancienne version.
https://www.cjoint.com/?DLmxaZNIUED
Tu as trouvé comment fonctionnait lig et col ?
eric
https://www.cjoint.com/?DLmxaZNIUED
Tu as trouvé comment fonctionnait lig et col ?
eric
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
15 déc. 2014 à 15:41
15 déc. 2014 à 15:41
Oui merci beaucoup grâce à ton aide je me suis beaucoup avancé, mais maintenant c'est plutôt avec la boucle de reconnaissance de prochaine cellule disponible avec laquelle j'ai un problème.
J'ai fait une fonction qui détecte si tes cellules sont fusionnées et le but est que je valide si la prochaine plage est disponible.
Lorsque je veux booker plusieurs activités (pour un max de 8h) dans la même journée j'ai quelques bugs au niveau des fusions des cellules, au bout de la troisième au lieu de fusionner les cellules disponible, mon code écrase et refusionne des cellules déjà fusionnés.
J'ai fait une fonction qui détecte si tes cellules sont fusionnées et le but est que je valide si la prochaine plage est disponible.
Lorsque je veux booker plusieurs activités (pour un max de 8h) dans la même journée j'ai quelques bugs au niveau des fusions des cellules, au bout de la troisième au lieu de fusionner les cellules disponible, mon code écrase et refusionne des cellules déjà fusionnés.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
15 déc. 2014 à 16:03
15 déc. 2014 à 16:03
Pas bonjour non plus,
Pas de soucis comme ça sur la dernière version que j'ai mise.
eric
Pas de soucis comme ça sur la dernière version que j'ai mise.
eric
mido_ing
Messages postés
8
Date d'inscription
jeudi 11 décembre 2014
Statut
Membre
Dernière intervention
15 décembre 2014
15 déc. 2014 à 17:11
15 déc. 2014 à 17:11
Désolé j'ai pas compris ??
11 déc. 2014 à 22:36
Mais bon tu peux voir mon code en pièce jointe
http://www.cjoint.com/confirm.php?cjoint=DLlwHU8uCsf,
sinon ma problématique est que pour chaque ressources (mécanos) que je possède et pour chaque journée de la semaine, il faudrait que je copie le code actuel et que je modifie mes coordonnées de Range définis dans mon code, Ce que je trouve un peu nul, car je suis persuadé qu'il y a une forme de boucle que je pourrai faire pour couvrir le tout.
Car le principe est simple , je sélectionne le mécano, ensuite la journée, ensuite le nombre d'heures à bosser, la catégorie et le détail du travail.
Par la suite je viens fusionner et colorier le nombre de cellule en fonction du nombre d'heures (chaque cellule vaut une heure dans tableau) et je viens finalement transposer l'information de la catégorie et du détail du travail.
J'espère que c'est plus clair.
Merci d'avance les amis