Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1017 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA excel Suppression ligne sous condition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA excel Suppression ligne sous condition

n°2227441
toftof95
Débutant VBA
Posté le 07-05-2014 à 11:13:57  profilanswer
 

Bonjour à tous,
tout nouveau dans le VBA, je commence a réaliser quelques macro qui me facilitent la vie dans mon travail.
J'apprend beaucoup de chose en lisant les divers forums et c'est grâce a vous que j'avance dans mes projets.
 
Aujourd'hui je suis coincé sur un problème et ne trouve pas de réponse a ma question.
 
Je vous explique mon problème:
J'ai un fichier excel avec une centaine de feuilles.
Chaque feuille, se ressemble mais en fonction de la mise en page et des informations, les textes qui me servent de repères ne sont jamais disposés au meme emplacement.
Dans chaque feuille de ce fichier je souhaites supprimer toutes les lignes avant la ligne ou je trouve le texte suivant "CONSIGNES PARTICULIERES" et également supprimer toutes les lignes a partir de la ligne ou je trouve le texte "CODAGES".
 
J'espère avoir été assez clair dans mes explications.
 
Par avance merci de votre aide

mood
Publicité
Posté le 07-05-2014 à 11:13:57  profilanswer
 

n°2227471
Laebruhtra
Posté le 07-05-2014 à 13:59:45  profilanswer
 

Hello !
 
Une petite idée de ce à quoi ça pourrait ressembler :
 

Code :
  1. Sub SupprLig()
  2. Dim lig1, lig2, derlig, lig As Integer
  3. 'On supprime les lignes depuis la celle où on trouve "CONSIGNES PARTICULIERES" jusqu'à la première
  4. lig1 = Cells.Find("CONSIGNES PARTICULIERES", lookat:=xlWhole).Row
  5. For lig = lig1 To 1 Step -1
  6.     Rows(lig).Delete
  7. Next lig
  8. 'On supprime les lignes depuis la dernière jusqu'à celle où on trouve "CODAGES"
  9. lig2 = Cells.Find("CODAGES", lookat:=xlWhole).Row
  10. derlig = Range("A" & Range("A:A" ).Rows.Count).End(xlUp).Row
  11. For lig = derlig To lig2 Step -1
  12.     Rows(lig).Delete
  13.     derlig = Range("A" & Range("A:A" ).Rows.Count).End(xlUp).Row
  14. Next lig
  15. End Sub


 
Ce code nécessite qu'il n'y ai qu'une seule cellule marquée "CONSIGNES PARTICULIERES", et une seule marquée "CODAGES".
De plus, avec la définition de "derlig", on est à la ligne de la première cellule non vide de la colonne A en partant du bas, donc vaut mieux éviter d'avoir des trous.
Je n'ai pas non plus indiqué les noms de feuille, mais l'idée est là, je te laisse adapter ça.


---------------
Mon topal ACH/VDS
n°2227491
toftof95
Débutant VBA
Posté le 07-05-2014 à 16:02:37  profilanswer
 

Hello Laebruhtra,
 
Merci beaucoup pour ton code, cela fonctionne très bien.
Je l'ai adapté pour qu'il bouche sur chacune des feuilles de mon fichier.
 
Il me reste juste une question:
La ligne ou est écrit CONSIGNES PARTICULIERES est également supprimée.
Je souhaite que celle ci ne le soit pas.  
Que faut-il que je modifie?
 
Par avance merci

n°2227979
Laebruhtra
Posté le 14-05-2014 à 13:19:52  profilanswer
 

Non testé, mais changer ce morceau de code :

Code :
  1. 8.For lig = lig1 To 1 Step -1


En ce morceau de code :

Code :
  1. 8.For lig = lig1 - 1 To 1 Step -1


devrai faire le taf
 
[EDIT] Après test, ça fonctionne.
 
Au plaisir.


Message édité par Laebruhtra le 14-05-2014 à 13:22:17

---------------
Mon topal ACH/VDS

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA excel Suppression ligne sous condition

 

Sujets relatifs
Préserver un retour à la ligne dans un textarea en utf-8Affichage de la fenêtre word - VBA Excel
Base SQL et VB ExcelCompteur d'heures de travail par projet VBA EXCEL
Executer un script si nouvelle ligne dans une table MySQLprobleme de suppression d'un champ de type char
Plus de sujets relatifs à : VBA excel Suppression ligne sous condition


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR