Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2011, 13h56   #1
Invité de passage
 
Patrick Joye
Inscription : mars 2010
Messages : 14
Détails du profil
Informations personnelles :
Nom : Patrick Joye

Informations forums :
Inscription : mars 2010
Messages : 14
Points : 3
Points : 3
Par défaut Supprimer des lignes dans plusieurs feuilles de calcul

Bonjour le forum,

dans un fichier excel contenant 10 feuilles, je supprime dans 6 de ces feuilles les lignes (entre 1 et 2050) qui ne comprennent pas le code BE1 en colonne H. Je fais cela dans chaque feuille via un code que j'ai récupéré sur la toile (mes excuses de ne pas me souvenir du nom du site et du nom de l'auteur du code). Ce code est le suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub KillLigne()
 Dim Valeur As String, Colonne As Integer, FirstLine As Long, LastLine As Long
     ' Valeur      : valeur à comparer au contenu de la cellule
     ' Colonne    : colonne où se trouve la valeur à vérifier
     ' FirstLine  : première ligne à vérifier
     ' LastLine   : dernière ligne à vérifier
 
     Dim lngL As Long
 
     Application.ScreenUpdating = False
     Application.DisplayAlerts = False
     For lngL = 2050 To 1 Step -1
          If Cells(lngL, 8).Value <> "BE1" Then
               Rows(lngL).Delete Shift:=xlShiftUp
          End If
     Next lngL
     Application.DisplayAlerts = True
     Application.ScreenUpdating = True
End Sub
J'aimerais transformer ce code pour que automatiquement il passe dans les feuilles 1,2 3 4 5 et 6 du fichier excel et que donc je ne doive le lancer qu'une seule fois plutot que 6 fois.
Pourriez vous m'aider ?
D'avance je vous remercie.
Djepi.
djepi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 14h14   #2
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 805
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 805
Points : 3 003
Points : 3 003
Bonjour,

Il te suffit juste de boucler sur les feuilles

Code :
1
2
3
4
5
6
7
8
9
 
For i = 1 to 6
     ActiveWorkbook.Sheets(i).Select
     For lngL = 2050 To 1 Step -1
          If Cells(lngL, 8).Value <> "BE1" Then
               Rows(lngL).Delete Shift:=xlShiftUp
          End If
     Next lngLNext
Next i
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 14h31   #3
Invité de passage
 
Patrick Joye
Inscription : mars 2010
Messages : 14
Détails du profil
Informations personnelles :
Nom : Patrick Joye

Informations forums :
Inscription : mars 2010
Messages : 14
Points : 3
Points : 3
Bonjour PC75

merci pour ta réponse.
En fait j'ai été un peu vite dans la description de ce que je veux faire. Mes feuilles sont bien les 6 premières dans le fichier mais elles ne s'appellent pas feuille1, 2,...6. Elles portent des noms comme "facin", "facout", "ncin", "ncout",
"avin" et "avout". Ton code est-il bon à condition que les feuilles soient les 6 premières (à gauche) ou bien faut-il modifier le code pour nommer chacune des 6 feuilles par son nom?
Pardon si la question est basique mais je suis très très débutant.
Merci beaucoup d'avance.
Djepi
djepi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 15h30   #4
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 805
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 805
Points : 3 003
Points : 3 003
Re,

ActiveWorkbook.Sheets(i).Select sélectionnera la feuille correspondant à la valeur de i, quelque soir son nom.

Ainsi, si i vaut 1, ActiveWorkbook.Sheets(i).Select sélectionnera la première feuille.
Cela évite d'avoir à faire ActiveWorkbook.Sheets("facin").Select
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web