JerCaz
XLDnaute Occasionnel
Bonjour le forum,
Toujours dans la réalisation du même projet (pour les courageux qui ont vu passer mes diverses demandes... encore une fois un grand merci à eux!), j'ai une feuille où toutes les lignes à partir de la 5ème ligne commencent par une date (c'est-à-dire que la colonne A contient des dates, dès la 5è ligne).
Je souhaite réaliser une macro qui me permet de vérifier ma feuille, qui classe les examens par ordre chronologique, et qui supprime toutes les lignes dont la date est échue. Enfin, pour simplifier la vie des utilisateurs, se serait pratique si elle s'activait dès qu'on affiche l'onglet.
Après avoir effectué une petite recherche sur google, j'ai donc trouvé et adapté une macro, que voici:
Mon plus gros soucis avec cette macro, c'est que dès qu'elle trouve une date échue, elle efface la ligne puis arrête son travail, c'est-à-dire qu'elle ne cherche plus après d'autres lignes dont la date est échue afin de les supprimer... Or, je voudrais qu'elle fasse tout d'un coup: rechercher toutes les lignes dont la date est échue, et les supprimer.
Mon deuxième soucis, c'est que mon fichier est amené à devenir un fichier partagé. Or, il me semble, si je ne m'abuse, qu'avec un fichier partagé, autant on peut sélectionner une ligne (ou une colonne) entière, mais on ne peut pas faire de sélection restreinte. Je me trompe peut-être, mais si ce n'est pas le cas, je crains que la macro ne fonctionne plus lorsque le fichier sera partagé à cause du bout de code
Comment faire pour ne pas aboutir à un bug lorsque le fichier sera mis en partagé?
D'avance, merci beaucoup pour votre aide!
PS: la connexion que j'utilise (professionnelle - je suis sur mon lieu de travail) ne me permets pas d'héberger de pièces jointes sur "ci-joint". C'est pourquoi je suis obligé de contourner la charte en utilisant un autre hébergeur.
Néanmoins, vous trouverez le bout de fichier sur lequel je travaille à la suite.
Voir le Fichier : test_34.zip
Toujours dans la réalisation du même projet (pour les courageux qui ont vu passer mes diverses demandes... encore une fois un grand merci à eux!), j'ai une feuille où toutes les lignes à partir de la 5ème ligne commencent par une date (c'est-à-dire que la colonne A contient des dates, dès la 5è ligne).
Je souhaite réaliser une macro qui me permet de vérifier ma feuille, qui classe les examens par ordre chronologique, et qui supprime toutes les lignes dont la date est échue. Enfin, pour simplifier la vie des utilisateurs, se serait pratique si elle s'activait dès qu'on affiche l'onglet.
Après avoir effectué une petite recherche sur google, j'ai donc trouvé et adapté une macro, que voici:
Code:
'On classe l'onglet par ordre chronologique dès la ligne 5
Range("A5:M65536").Select
Selection.Sort Key1:=Range("M5"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A5").Select
'On efface les "lignes" d'hier dans la sélection si la row contient la date d'hier (ou plus ancienne).
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
For i = Selection.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Selection.Rows(i)) <= Date - 1 Then
Selection.Rows(i).EntireRow.Delete
End If
Next i
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
Mon plus gros soucis avec cette macro, c'est que dès qu'elle trouve une date échue, elle efface la ligne puis arrête son travail, c'est-à-dire qu'elle ne cherche plus après d'autres lignes dont la date est échue afin de les supprimer... Or, je voudrais qu'elle fasse tout d'un coup: rechercher toutes les lignes dont la date est échue, et les supprimer.
Mon deuxième soucis, c'est que mon fichier est amené à devenir un fichier partagé. Or, il me semble, si je ne m'abuse, qu'avec un fichier partagé, autant on peut sélectionner une ligne (ou une colonne) entière, mais on ne peut pas faire de sélection restreinte. Je me trompe peut-être, mais si ce n'est pas le cas, je crains que la macro ne fonctionne plus lorsque le fichier sera partagé à cause du bout de code
Code:
Range("A5:M65536").Select
Selection.Sort Key1:=Range("M5"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A5").Select
D'avance, merci beaucoup pour votre aide!
PS: la connexion que j'utilise (professionnelle - je suis sur mon lieu de travail) ne me permets pas d'héberger de pièces jointes sur "ci-joint". C'est pourquoi je suis obligé de contourner la charte en utilisant un autre hébergeur.
Néanmoins, vous trouverez le bout de fichier sur lequel je travaille à la suite.
Voir le Fichier : test_34.zip
Dernière édition: