Macro suppression de lignes sous condition [Résolu/Fermé]

Signaler
-
 CALI -
Bonjour,

Je souhaiterais faire une macro qui supprime des lignes dans un tableau excel sous condition.
Après la ligne nommée TOTAL GENERAL, supprimer toutes les lignes.

Sachant que celle-ci peut se trouver n'importe ou?

Par avance merci de votre coopération.


7 réponses

Messages postés
9220
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 février 2020
1 718
bonjour

un exemple à copier dans un module (Alt-F11 pour y accéder)
les constantes sont à adapter

Option Explicit

Const F = "FEuil1"
Const lideb = 1
Const codeb = 1
Const motcle = "TOTAL GENERAL"

Public Sub SupprimeLignesApresMotCle()
Dim li As Long, lifin As Long
Dim mot As String, s As String
lifin = Sheets(F).Cells(65536, codeb).End(xlUp).Row
For li = lifin To lideb Step -1
  s = Sheets(F).Cells(li, codeb)
  If s = motcle Then: Exit Sub
  If s <> motcle Then
    Sheets(F).Rows(li).Delete
  End If
Next li
End Sub


bonne suite
bonjour,

J'ai testé cette macro mais çà ne marche pas.

Puis-je vous envoyer mon fichier?

Par avance, merci
Messages postés
9220
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 février 2020
1 718
re

J'ai testé cette macro mais çà ne marche pas.

1. as tu copié la macro dans un module
2. as tu modifié les valeurs des constantes en les adaptant à ton fichier,
3. pour envoyer ton fichier, tu utilises cijoint.fr ou cjoint.com et tu joins le lien a ton prochain post

bonne suite
bonjour

Voici le lien pour le fichier.

http://www.cijoint.fr/cjlink.php?file=cj201109/cijn1kqfy6.xls

Par avance, merci
michel_m
Messages postés
16095
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 février 2020
2 880
Bonjour

a eesayer

Option Explicit 
Const Cible As String = "total général" 

Sub supprimer_après() 
Dim Deb As Long, Ffin As Long 

With Sheets("MEUR Commissionnaire") 
     Deb = .Cells.Find(Cible, , xlFormulas, , xlByRows, xlPrevious).Row + 1 
     fin = .Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row 
     .Rows( Deb & ":" & fin).Clear 
End With 

End Sub


formules deb et fin d'après Alain Vallon (excelabo)
Messages postés
9220
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 février 2020
1 718
re

avec la macro de michel_m

https://www.cjoint.com/?0ItwlbICr9Z

RQ1. Ctrl+s pour lancer la macro
RQ2. j'ai rajouté une confirmation

bonne suite
bonjour et merci beaucoup.

Cà fonctionne

A+
Messages postés
16095
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 février 2020
2 880
Salut CCM31

petits détails :o)

une constante se déclare avant la procédure (comme public, private...) pour pouvoir l'utiliser dans plusieurs procédures dans le p^rojet
m^me si ici, il n'y a qu'une proc, nous mettons en constante question de lisibilité et pour éviter de rentrer à l'intérieur de la proc

il faut déclarer le type de la constante
Const Cible as string="machin"
sinon Cible est considéré comme un variant ==> conso de Ram

voilà, surtout, ne prends pas ça mal
Messages postés
9220
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
22 février 2020
1 718
salut michel_m

RQ1. Je sais, c'est à cause d'une sombre histoire de copier/coller
RQ2. Je ne connaissais pas la déclaration du type d'une constante chaine (chaine seulement ?)
RQ3. Rassures toi, apprendre quelque chose ne fait jamais mal !

bonne journée
michel_m
Messages postés
16095
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 février 2020
2 880
chaine seulement ?

Non, comme une variable
const xxx as byte=34
const yyy as date=#12/09/2010#
const zzz as string*1="A"
etc