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
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
Le mardi 13 octobre 2020 à 01:24:06 UTC+2, MichD a écrit :
Bonjour,
Qu'est-ce qui ne fonctionne pas dans ton classeur?
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
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
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?
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
'-------------------------------------
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
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
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
'-------------------------------------
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
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
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!
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
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/
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
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/
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
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
'-----------------------------------------------
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
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.
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.
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.
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
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!
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
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 ;)
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 ;)
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 ;)