Macro effacer lignes dans feuille excel [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
5 mars 2010
-
Messages postés
5
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
5 mars 2010
-
Bonjour
Je cherche une macro excel pour effacer des lignes dans une feuille.
Il faudrait effacer toutes les lignes du début jusqu'à la ligne ou il y a un mot "bonjour" et effacer aussi cette ligne.
Merci de me donner une réponse

Renato

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Félicitations ...
N'oublie pas de cliquer sur réponse acceptée (sur message avec solution)


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
14723
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 septembre 2020
144
Bonjour,

Demande à Excel d'enregistrer une macro et regarde le code généré.

Mon site
Messages postés
5
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
5 mars 2010

Bonsoir
La ligne ou se trouve "Bonjour" est aléatoire dans la feuille, faudrait une recherche du mot et supprimer tout ce qui est avant.
Renato
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
Bien.
Commence donc par le commencement, à savoir déterminer la ligne contenant ce mot (nous verrons le reste seulement ensuite).
Tu as pour ce faire à utiliser la méthode Find. Elle est exposée dans ton aide Excel et y est assortie d'un exemple clair, qui te permettra d'extraire l'adresse de la ligne concernée.
Reviens après avoir passé ce cap et nous verrons alors ce qyu'il convient de faire pour supprimer tout jusqu'à ladite ligne incluse


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
5
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
5 mars 2010

Bonjour

J'ai trouvé cette macro,ça marche et ça renvoie en D1 le nombre de ligne à effacer

Sub Macro1()

'Recherche de "bonjour"
Cells.Find(What:="bonjour", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

'Position en D1 du nb de lignes
Ligne = ActiveCell.Row
Range("D1").Value = Ligne

End Sub

Et maintenant.......
Peut-être que je dois chercher comment les effacer ?
Avec une boucle ou bien de la cellule A1 a la cellule A+15,(ce serai bien qu'en D1,j'ai la position cellule (A15), mais comment ?
J'attend que vous me guidiez
A bientôt
Renato
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Tu as passé la première étape par toi-même et je t'en félicite (c'est beaucoup mieux, d'apprendre à pêcher)

Deuxième étape ? ===>> un exemple (teste-le) :
Range(Rows(1), Rows(11)).Delete

t'efface les lignes 1 à 11 incluses
Par quoi remplacer 11 ? ===>> par ta variable Ligne
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
5
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
5 mars 2010

Super !!!!!!!!!!!!

Je suis content d'avoir trouvé (presque...) tout seul.
C'est très bien de guider plutôt que de pondre tout fait.
Je continue ma macro et peut-être à bientôt si je cale.

Grand merci !!!!!!!

Bonne continuation

Renato
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bien (j'ai du temps pour toi et tu le mérites) :
1) que se passerait-il si aucune cellule ne contenait le mot recherché ("bonjour") ? ===>> plantage assuré
2) pourquoi partir de ActiveCell (qui t'oblige à la sélectionner d'abord) ?
3) pourquoi aller chercher aussi dans les formules ? (c'est là inutile, puisque seules les valeurs t'intéressent
4) pourquoi sélectionner la cellule trouvée pour en déterminer le n° de ligne ? 'Ce n'est pas "léger" et c'est donc à éviter)
regarde ce que donne l'application de ces principes, en allant tout droit au but :
 Dim toto As Range
 Set toto = Cells.Find(What:="bonjour", After:=Range("A1"), LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
 If Not toto Is Nothing Then ' <<<=== c'est là qu'on vérifie que le mot existe dans une des cellules (et on ne fait rien dans le cas contraire)
   Range(Rows(1), Rows(toto.Row)).Delete " <<<<<==== on va direcxtement au but (sans passer par une variable tremplin)
 End If


Anayse bien ce code. Je suis certain que tu en comprendras tout et de ce que tu garderas en mémoire que toutes les sélections, etc... ne servent qu'à alourdir, alors qu'on peut toujours "pointer" directement
Tu as fait un début qui m'a donné envie de te guider. Continue maintenant en gardant présentes à l'esprit ces recommandations (toujours).
Amitiés.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
5
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
5 mars 2010

Bonsoir
Bien reçu le code
C'est du complet bien fait.......
En fait j'aime bien les choses logiques, précises et efficaces.
J'ai laissé tombé quick-Basic pour excel et je découvre de grosses possibilités, mais avec un peu de peine pour ce langage.
Je prend note de raisonner comme tu me le conseille et j'espère progresser (avec le forum...)
Merci pour les conseils

Renato