Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Colorier dates de vacances

22 réponses
Avatar
L-A
bonjour

comment colorier mes dates de vacances dans mon calendrier cr=C3=A9=C3=A9 e=
n semaine.

cel m'importe pour la suite car j'ai des formations =C3=A0 mettre et je vou=
drai que ca ne compte pas les p=C3=A9riodes ou le centre est ferm=C3=A9

je vous mets mon fichier en pj

merci

https://www.cjoint.com/c/JJjtFIDlHA7

10 réponses

1 2 3
Avatar
MichD
Bonjour,
Qu'est-ce qui ne fonctionne pas dans ton classeur?
Regarde ici : https://www.cjoint.com/c/JJmxwyGXa0M
Un excellent travail de Michel_D.
MichD
Avatar
L-A
Le mardi 13 octobre 2020 à 01:24:06 UTC+2, MichD a écrit :
Bonjour,
Qu'est-ce qui ne fonctionne pas dans ton classeur?
Regarde ici : https://www.cjoint.com/c/JJmxwyGXa0M
Un excellent travail de Michel_D.
MichD

Bonjour
en fait sur windows ca fonctionne au top mais sur mon mac j'ai une erreur d e compilation
reference de variable incorrecte dans next
mais l'essentiel est que ca fonctionne au bureau
Avatar
MichD
Le 13/10/20 à 12:25, L-A a écrit :
Le mardi 13 octobre 2020 à 01:24:06 UTC+2, MichD a écrit :
Bonjour,
Qu'est-ce qui ne fonctionne pas dans ton classeur?
Regarde ici : https://www.cjoint.com/c/JJmxwyGXa0M
Un excellent travail de Michel_D.
MichD

Bonjour
en fait sur windows ca fonctionne au top mais sur mon mac j'ai une erreur de compilation
reference de variable incorrecte dans next
mais l'essentiel est que ca fonctionne au bureau

Je ne connais pas Excel sous Mac.
Ceci n'est pas une obligation : Next iCol et Next iLig
On peut oublier Icol et iLig et cela va fonctionner sous Windows et
peut-être sur Mac.
Essaie ceci : Remplace ceci :
'-------------------------------------
For iLig = 2 To 5
For iCol = 12 To 21 Step 3
Worksheets("VACANCES").Cells(iLig, iCol).Select
If Not IsDate(ActiveCell.Value) Then Gestion_Activite
Next iCol
Next iLig
'-------------------------------------
Par :
'-------------------------------------
For iLig = 2 To 5
For iCol = 12 To 21 Step 3
Worksheets("VACANCES").Cells(iLig, iCol).Select
If Not IsDate(ActiveCell.Value) Then Gestion_Activite
Next
Next
'-------------------------------------
MichD
Avatar
L-A
Le mardi 13 octobre 2020 à 18:38:16 UTC+2, MichD a écrit :
Le 13/10/20 à 12:25, L-A a écrit :
Le mardi 13 octobre 2020 à 01:24:06 UTC+2, MichD a écrit :
Bonjour,
Qu'est-ce qui ne fonctionne pas dans ton classeur?
Regarde ici : https://www.cjoint.com/c/JJmxwyGXa0M
Un excellent travail de Michel_D.
MichD

Bonjour
en fait sur windows ca fonctionne au top mais sur mon mac j'ai une erre ur de compilation
reference de variable incorrecte dans next
mais l'essentiel est que ca fonctionne au bureau
Je ne connais pas Excel sous Mac.
Ceci n'est pas une obligation : Next iCol et Next iLig
On peut oublier Icol et iLig et cela va fonctionner sous Windows et
peut-être sur Mac.
Essaie ceci : Remplace ceci :
'-------------------------------------
For iLig = 2 To 5
For iCol = 12 To 21 Step 3
Worksheets("VACANCES").Cells(iLig, iCol).Select
If Not IsDate(ActiveCell.Value) Then Gestion_Activite
Next iCol
Next iLig
'-------------------------------------
Par :
'-------------------------------------
For iLig = 2 To 5
For iCol = 12 To 21 Step 3
Worksheets("VACANCES").Cells(iLig, iCol).Select
If Not IsDate(ActiveCell.Value) Then Gestion_Activite
Next
Next
'-------------------------------------
MichD

Eh bien ça marche nickel sur mon mac perso,
j'essaierai demain sur le pc du boulot
merci MichD
Avatar
MichD
j'essaierai demain sur le pc du boulot

Cela fonctionne, aucun problème, ça fait des années que j'écris des
boucles sans inscrire les iCol ou iLig dans les lignes Next.
Si tu regardes dans Wikipédia, il est écrit :"Visual Basic for
Applications (VBA) est une implémentation de Microsoft Visual Basic qui
est intégrée dans toutes les applications de Microsoft Office."
"Visual basic" est un "ancien - n'est plus supporté par Microsoft"
langage de programmation. Il est plus que possible que cette syntaxe
"next ICol" et "Next ILig" dans Excel émane de ce langage de programmation.
Dans les faits, VBA (Visual basic for application) ne requiert pas cette
syntaxe. Il est beaucoup plus flexible!
MichD
Avatar
Michel__D
Bonsoir,
Le 12/10/2020 à 20:09, L-A a écrit :
Le lundi 12 octobre 2020 à 19:51:35 UTC+2, Michel__D a écrit :

[...]
Par exemple (j'ai pas testé donc à adapter si besion) tu affecte la procédure suivante à un bouton :
Sub Action_Bouton
Dim iCol As Long, iLig As Long
For iLig = 2 To 5
For iCol = 11 To 20 Step 3
Worksheets("VACANCES").Cells(iLig, iCol).Select
If IsDate(ActiveCell.Value) Then Gestion_Activite
Next iLig
Next iCol
End Sub

Euh, je fais quoi quand via m'insulte :):)
voici mon fichier modifié tel que tu me l'as dis
https://www.cjoint.com/c/JJmsjbnBPY7

Essaye avec ce fichier :
https://mon-partage.fr/f/gTrL7zCi/
Avatar
MichD
Bonjour Michel_D,
Si je peux me permettre, il y a une toute petite coquille dans la
procédure Btn_Executer(). Suppose que quelqu'un voudrait appeler cette
procédure à partir de la fenêtre des macros au moment où il se retrouve
sur une autre feuille de calcul que "Vacances", cela générerait une
erreur, car la procédure "sélectionne" une cellule, mais pour pouvoir
faire cela il faut s'assurer qu'on est sur la bonne feuille sinon c'est
la catastrophe!
C'est un détail, car la procédure est appelée par un bouton de commande!
Comme j'avais un peu de temps, j'ai modifié quelque peu la syntaxe de la
procédure sans modifier le code...(je n’ai toujours pas compris la donne
du problème, mais cela n'est pas très important puisque toi tu as
réussi. ;-))
'-----------------------------------------------
Sub Btn_Executer()
Dim iCol As Long, iLig As Long, sTmp As String, Rg As Range
Application.ScreenUpdating = False
With Range("Activite")
Worksheets(.Parent.Name).Activate
For iLig = 2 To .Rows.Count
For iCol = 4 To .Columns.Count Step 3
Set Rg = .Cells(iLig, iCol)
With Rg
.ClearContents
If .Offset(0, -2).Text & .Offset(0, -1).Text <> "" Then
If IsDate(.Offset(0, -2).Value) And
IsNumeric(.Offset(0, -1).Value) Then
If CLng(.Offset(0, -1).Value) > 0 Then
Rg.Select
Gestion_Activite
Else
.Value = "#Erreur_NbSemaine"
End If
Else
.Value = "#Erreur_Date_ou_NbSemaine"
End If
End If
End With
Next
Next
.Cells(1, 1).Select
End With
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------
MichD
Avatar
Michel__D
Bonsoir,
Le 13/10/2020 à 21:21, L-A a écrit :
Le mardi 13 octobre 2020 à 20:30:06 UTC+2, MichD a écrit :
Bonjour Michel_D,
Si je peux me permettre, il y a une toute petite coquille dans la
procédure Btn_Executer(). Suppose que quelqu'un voudrait appeler cette
procédure à partir de la fenêtre des macros au moment où il se retrouve
sur une autre feuille de calcul que "Vacances", cela générerait une
erreur, car la procédure "sélectionne" une cellule, mais pour pouvoir
faire cela il faut s'assurer qu'on est sur la bonne feuille sinon c'est
la catastrophe!
C'est un détail, car la procédure est appelée par un bouton de commande!
Comme j'avais un peu de temps, j'ai modifié quelque peu la syntaxe de la
procédure sans modifier le code...(je n’ai toujours pas compris la donne
du problème, mais cela n'est pas très important puisque toi tu as
réussi. ;-))
'-----------------------------------------------
Sub Btn_Executer()
Dim iCol As Long, iLig As Long, sTmp As String, Rg As Range
Application.ScreenUpdating = False
With Range("Activite")
Worksheets(.Parent.Name).Activate
For iLig = 2 To .Rows.Count
For iCol = 4 To .Columns.Count Step 3
Set Rg = .Cells(iLig, iCol)
With Rg
.ClearContents
If .Offset(0, -2).Text & .Offset(0, -1).Text <> "" Then
If IsDate(.Offset(0, -2).Value) And
IsNumeric(.Offset(0, -1).Value) Then
If CLng(.Offset(0, -1).Value) > 0 Then
Rg.Select
Gestion_Activite
Else
.Value = "#Erreur_NbSemaine"
End If
Else
.Value = "#Erreur_Date_ou_NbSemaine"
End If
End If
End With
Next
Next
.Cells(1, 1).Select
End With
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------
MichD

Bonsoir les champions
merci pour la précision wikipedia et pour le module BtnExecuter
j'ai rajouté une ligne aussi pour qu'à l'exécution, cela efface toutes les données dans le tableau avant de les réinscrire
effectivement, si je change une date ( 1 semaine de plus par exemple) alors ca me laissera les données anciennes.
je fais le malin avec mon simple clearcontents, mais c'est ma petite victoire.
Pour MichD, la donne du problème est la suivante.
J'ai des stages avec 4 activités à proposer par classe.
or selon la durée des stages et du type de stage, j'ai besoin de gérer mes installations.
pour cela je dois prendre en compte la fermeture de la structure
donc si une activité à une durée de 4 semaines et que pendant cette durée il y a 1 semaine de fermeture, sur le calendrier cela représentera 5 semaines " d'immobilisation"
J'espère que cel t'éclaircira
Maintenant, je vais édulcorer un peu car c'est comme les voitures, il y a toujours des options qu'in souhaite ajouter :)

Je te laisse entre les mains du spécialiste Excel VBA, je pense avoir apporter ma contribution.
Avatar
MichD
Je te laisse entre les mains du spécialiste Excel VBA, je pense avoir
apporter ma contribution.

Désolé si je t'ai offusqué. Je n'aurais pas dû publier mon dernier
message. Moi, je n'aurais pas pu écrire le code puisque je ne comprends
pas vraiment la donne du problème. Le demandeur est chanceux que tu sois
intervenu, il a ce qu'il avait de besoin et le code est très efficace.
Il y a plusieurs manières de concevoir le code et de l'écrire. La
syntaxe est très secondaire!
MichD
Avatar
Michel__D
Bonjour,
Le 14/10/2020 à 03:30, MichD a écrit :
Je te laisse entre les mains du spécialiste Excel VBA, je pense avoir apporter ma contribution.

Désolé si je t'ai offusqué. Je n'aurais pas dû publier mon dernier message. Moi, je n'aurais pas pu
écrire le code puisque je ne comprends pas vraiment la donne du problème. Le demandeur est chanceux
que tu sois intervenu, il a ce qu'il avait de besoin et le code est très efficace. Il y a plusieurs
manières de concevoir le code et de l'écrire. La syntaxe est très secondaire!
MichD

T'inquiète pas, venant de toi cela ne me dérange pas mais comme tu semblais vouloir peaufiner le
truc et que j'y ai passé suffisamment de temps dessus ma réponse allait dans ce sens ;)
1 2 3