OVH Cloud OVH Cloud

Macro, test en boucle sur une date, tant que...

17 réponses
Avatar
Perceval973
Bonjour a tous

J'ai besoin de votre aide...

Description de la situation :

Dans Excel 2003 ;
J'ai un tableau dans lequel j'ajoute des lignes régulièrement. Du coup
depuis le début de l'année mon tableau a deja 300 lignes, or seulement une
vingtaines d'entre elles me sont utiles au quotidien. Mais j'ai besoin de la
totalité pour faire des analyses en fin de mois, puis en fin d'année.

Probleme :

Lassé de faire masquer/afficher tous les matins, j'aimerais créer une macro
qui s'ouvre en meme temps que le fichier et qui va tester si la date d'une
cellule (jj/mm/aaaa hh:mm:ss) est comprise entre aujourd'hui moins 3 jours
et aujourd'hui plus 3 jours.
Si oui on affiche la ligne
Si non on masque la ligne...

Pourriez vous m'aider s'il vous plait ?
Merci d'avance
--
Perceval973

7 réponses

1 2
Avatar
Eric
re,

en remplacement du post précédent :

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Sheets("Planning Productions Dépôts")
For k = 4 To .[G65536].End(3).Row
If .Cells(k, 7) < Date - 3 Or .Cells(k, 7) > Date + 3 Then
.Rows(k).Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Perceval973
TROP COOL, t'es trop fort, merci Eric
Merci aussi a Youki et docm pour leur soutien

Eric wrote:
re,

en remplacement du post précédent :

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Sheets("Planning Productions Dépôts")
For k = 4 To .[G65536].End(3).Row
If .Cells(k, 7) < Date - 3 Or .Cells(k, 7) > Date + 3 Then
.Rows(k).Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub


Avatar
Perceval973
C'est bizarre j'ai essayé de transposer la macro dans un autre fichier dans
le quel les formats de date sont différents (et dans une autre cellule, la
I) et j'ai le meme symptome qu'initialement. C'est a dire que cela masque
les cellules 4 à 373 pour le coup.
Y a-t-il qlq chose a adapter dans les formules ?

Eric wrote:
re,

en remplacement du post précédent :

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Sheets("Planning Productions Dépôts")
For k = 4 To .[G65536].End(3).Row
If .Cells(k, 7) < Date - 3 Or .Cells(k, 7) > Date + 3 Then
.Rows(k).Hidden = True
End If
Next
End With
Application.ScreenUpdating = True
End Sub


Avatar
Eric
re,

Je suppose que tu as remplacé G par I mais as-tu corrigé le rang de la
colonne dans .Cells(k,7) en .Cells(k,9) ?
Le format ne doit pas intervenir dans le problème, du moins je pense.

C'est bizarre j'ai essayé de transposer la macro dans un autre fichier dans
le quel les formats de date sont différents (et dans une autre cellule, la
I) et j'ai le meme symptome qu'initialement. C'est a dire que cela masque
les cellules 4 à 373 pour le coup.
Y a-t-il qlq chose a adapter dans les formules ?




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Perceval973
Exact, tu as raison. Je n'avais pas modifié le rang. J'ignorais cela.
Encore merci pour ton aide

Perceval

Eric wrote:
re,

Je suppose que tu as remplacé G par I mais as-tu corrigé le rang de la
colonne dans .Cells(k,7) en .Cells(k,9) ?
Le format ne doit pas intervenir dans le problème, du moins je pense.

C'est bizarre j'ai essayé de transposer la macro dans un autre
fichier dans le quel les formats de date sont différents (et dans
une autre cellule, la I) et j'ai le meme symptome qu'initialement.
C'est a dire que cela masque les cellules 4 à 373 pour le coup.
Y a-t-il qlq chose a adapter dans les formules ?




Avatar
Perceval973
Dernière petite question...
Parfois dans la cellule I j'ai pas une date, mais du texte ("Non planifié")
Et cette ligne j'aimerais qu'elle s'affiche.
J'ai pensé ajouter les lignes ci dessous apres la première boucle, mais je
ne sais pas exprimer "esttexte" en vba

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Sheets("Planning Productions Dépôts")
For k = 4 To .[I65536].End(3).Row
If .Cells(k, 9) < Date - 3 Or .Cells(k, 9) > Date + 3 Then
.Rows(k).Hidden = True
End If
Next
End With

With Sheets("Planning Productions Dépôts")
For k = 4 To .[I65536].End(3).Row
If .Cells(k, 9) "ESTTEXTE"
.Rows(k).Hidden = False
End If
Next
End With

Application.ScreenUpdating = True
End Sub

Est-ce la bonne solution ?
Comment exprimer ESTTEXTE en vba ?

Eric wrote:
re,

Je suppose que tu as remplacé G par I mais as-tu corrigé le rang de la
colonne dans .Cells(k,7) en .Cells(k,9) ?
Le format ne doit pas intervenir dans le problème, du moins je pense.

C'est bizarre j'ai essayé de transposer la macro dans un autre
fichier dans le quel les formats de date sont différents (et dans
une autre cellule, la I) et j'ai le meme symptome qu'initialement.
C'est a dire que cela masque les cellules 4 à 373 pour le coup.
Y a-t-il qlq chose a adapter dans les formules ?




Avatar
Perceval973
J'ai trouvé en bidouillant...
Bon ca m'a pris l'apres midi, mais je suis content d'y etre parvenu :-)
Merci pour tout :-)
Perceval

Perceval973 wrote:
Dernière petite question...
Parfois dans la cellule I j'ai pas une date, mais du texte ("Non
planifié") Et cette ligne j'aimerais qu'elle s'affiche.
J'ai pensé ajouter les lignes ci dessous apres la première boucle,
mais je ne sais pas exprimer "esttexte" en vba

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Sheets("Planning Productions Dépôts")
For k = 4 To .[I65536].End(3).Row
If .Cells(k, 9) < Date - 3 Or .Cells(k, 9) > Date + 3 Then
.Rows(k).Hidden = True
End If
Next
End With

With Sheets("Planning Productions Dépôts")
For k = 4 To .[I65536].End(3).Row
If .Cells(k, 9) "ESTTEXTE"
.Rows(k).Hidden = False
End If
Next
End With

Application.ScreenUpdating = True
End Sub

Est-ce la bonne solution ?
Comment exprimer ESTTEXTE en vba ?

Eric wrote:
re,

Je suppose que tu as remplacé G par I mais as-tu corrigé le rang de
la colonne dans .Cells(k,7) en .Cells(k,9) ?
Le format ne doit pas intervenir dans le problème, du moins je pense.

C'est bizarre j'ai essayé de transposer la macro dans un autre
fichier dans le quel les formats de date sont différents (et dans
une autre cellule, la I) et j'ai le meme symptome qu'initialement.
C'est a dire que cela masque les cellules 4 à 373 pour le coup.
Y a-t-il qlq chose a adapter dans les formules ?






1 2