Bonjour à tous,
Depuis une grosse semaine je bute sur un problème qui semble simple : j'ai un UserForm avec un DTPicker qui me permet de choisr une date de début ensuite j'ai un bouton qui permet de rechercher la date de début dans un calendrier afficher sur la ligne 5 et à partir de là selectionner et colorer les cellule qui corresponde à la durée récupérée en colonne E
Voici le code avec explication :
Code :Sélectionner tout - Visualiser dans une fenêtre à part
Bon jusque là le code fonctionne presque tout le temps mais lorsque je passe à la ligne 2 qui utilise exactement la même macro (seul les valeur de recherche des ligne changent) le code bloque 1 fois sur 2 à cette ligne :
Code :Sélectionner tout - Visualiser dans une fenêtre à part
Ligne = x.Row
varible non définie
parfois j'arrive jusqu'à la ligne 3 de mon planing mais à partir de la 4 plus rien ne fonctionne pourtant le code est toujours identique et je l'est recopier une bonne trentaine de fois pour avoir une trentaine de tâche
on doit pouvoir faire plus simple mais vu mes connaissances , c'est tout ce que j'ai trouver
Voilà le quatrième paragraphe :
Code :Sélectionner tout - Visualiser dans une fenêtre à part
je joint aussi le fichier qui sera peu être plus parlant
enfin merci d’avance car je suis vraiment coincé
J'allais oublier, mon but n'est pas d'obtenir un planning fonctionnel sous une autre forme, je fais surtout ce programme pour apprendre le VBA en espérant que j'arrive à faire quelque chose de sympa
j'ai déjà soumis mon problème sur différent forum et personne n'a su répondre ! un coup ma variable x est bien incrémentée de la date, un autre coup la méthode find ne trouve rien et x est Nul
un MsgBox pour éviter l'erreur c'est le serpent qui se mord la queue car de toute manière impossible de trouver la date de début et de colorer les cellules
Toutes les idées sont les bienvenues, merci d'avance
cordialement
Didier
Depuis une grosse semaine je bute sur un problème qui semble simple : j'ai un UserForm avec un DTPicker qui me permet de choisr une date de début ensuite j'ai un bouton qui permet de rechercher la date de début dans un calendrier afficher sur la ligne 5 et à partir de là selectionner et colorer les cellule qui corresponde à la durée récupérée en colonne E
Voici le code avec explication :
Code :Sélectionner tout - Visualiser dans une fenêtre à part
Code:
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
Dim W As String
Dim Début As Date
Dim J As Double
Dim F As Date
Dim Compteur As Double
Dim x As Range
Dim Ligne
Dim colonne
'la durée de la tâche est X 2 car je travail en demi journée
J = (Durée.Value * 2)
'la date de début du programme qui est imputée par la feuil1
Début = DTPicker1.Value
If Range("D7") = "" And Range("D6") <> "" Then
'Je recherche la date de début dans la ligne 5 ou j'ai un calendrier jour par jour, au début ça coincé parceque les colonnes étaient fusionnées par paires, maintenant ça fonctionne pour la première ligne
Set x = Range("E5:AL5").Find(What:=Début, SearchOrder:=xlByColumns)
Je récupère l'adresse de la cellule qui contient la date de début
Ligne = x.Row
colonne = x.Column
'Je me positionne dessus et j'inscrit 1 dans la cellule du dessous ; c'est grace à ça que je vais pouvoir sélectionner ma durée
ActiveSheet.Cells(Ligne, colonne).Offset(1, 0) = 1
Je fais une boucle et j'inscrit 1 dans toutes les cellules qui correspondent à ma première tâche
Compteur = 1
While Compteur < J
Compteur = Compteur + 1
'F = la date, ce qui va m'éviter de travailler les weekend
F = Range("ZZ6").End(xlToLeft).Offset(-1, 0)
Range("ZZ6").End(xlToLeft).Offset(0, 1) = 1
Je transforme la date en nom de jour (lundi, mardi etc...)
W = WeekdayName(Weekday(F))
If W = "samedi" Then
Lorsque je trouve samedi je sélectionne toute mes cellules ou il y a des 1 et je les colores avec ma palette de couleur(showcolor)
Range("zz6").End(xlToLeft).Select
Range(ActiveCell, ActiveCell.End(xlToLeft)).Select
Selection.Interior.Color = ShowColor
La boite de dialogue permet d'arrêter la boucle tant que je n'ai pas colorer la première partie de la tâche
MsgBox "La tâche n'est pas achevée !", vbOKOnly
'une fois terminer je continu ma sélection
Range("ZZ6").End(xlToLeft).Offset(0, 5) = 1
End If
Wend
'je selectionne et color la deuxième partie de la tâche
Range("zz6").End(xlToLeft).Select
Range(ActiveCell, ActiveCell.End(xlToLeft)).Select
Selection.Interior.Color = ShowColor
'par précausion je rénissialise W
W = 0
'j'essais de donner la date de dépard au DTPicker mais c'est pas au point
DTPicker1.Value = (DTPicker1.Value + (Durée.Value / 2) + 1)
End If
Code :Sélectionner tout - Visualiser dans une fenêtre à part
Ligne = x.Row
varible non définie
parfois j'arrive jusqu'à la ligne 3 de mon planing mais à partir de la 4 plus rien ne fonctionne pourtant le code est toujours identique et je l'est recopier une bonne trentaine de fois pour avoir une trentaine de tâche
on doit pouvoir faire plus simple mais vu mes connaissances , c'est tout ce que j'ai trouver
Voilà le quatrième paragraphe :
Code :Sélectionner tout - Visualiser dans une fenêtre à part
Code:
If Range("D10") = "" And Range("D9") <> "" Then
Set x = Range("E5:AL5").Find(What:=Début, SearchOrder:=xlByColumns)
Ligne = x.Row
colonne = x.Column
ActiveSheet.Cells(Ligne, colonne).Offset(4, 0) = 1
Compteur = 1
While Compteur < J
Compteur = Compteur + 1
F = Range("ZZ9").End(xlToLeft).Offset(-4, 0)
Range("ZZ9").End(xlToLeft).Offset(0, 1) = 1
W = WeekdayName(Weekday(F))
If W = "samedi" Then
Range("zz9").End(xlToLeft).Select
Range(ActiveCell, ActiveCell.End(xlToLeft)).Select
Selection.Interior.Color = ShowColor
MsgBox "La tâche n'est pas achevée !", vbOKOnly
Range("ZZ9").End(xlToLeft).Offset(0, 5) = 1
End If
Wend
Range("zz9").End(xlToLeft).Select
Range(ActiveCell, ActiveCell.End(xlToLeft)).Select
Selection.Interior.Color = ShowColor
W = 0
DTPicker1.Value = (DTPicker1.Value + (Durée.Value / 2) + 1)
End If
enfin merci d’avance car je suis vraiment coincé
J'allais oublier, mon but n'est pas d'obtenir un planning fonctionnel sous une autre forme, je fais surtout ce programme pour apprendre le VBA en espérant que j'arrive à faire quelque chose de sympa
j'ai déjà soumis mon problème sur différent forum et personne n'a su répondre ! un coup ma variable x est bien incrémentée de la date, un autre coup la méthode find ne trouve rien et x est Nul
un MsgBox pour éviter l'erreur c'est le serpent qui se mord la queue car de toute manière impossible de trouver la date de début et de colorer les cellules
Toutes les idées sont les bienvenues, merci d'avance
cordialement
Didier
Pièces jointes
Dernière édition: