VBA: Fonction de ...à
miriade97
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
miriade97 -
miriade97 -
Bonjour,
Voilà je souhaite faire une macro qui me permettrait de supprimer toutes les lignes excel qui sont compris entre deux lignes intitulées : "Avant la journée" jusqu'à "Après la journée". (Il faudrait aussi supprimer "Avant la journée" et "Après la journée")
Ces lignes ne sont pas vides. Je ne peux pas supprimer juste avec des numéros (ex de la ligne 8 à 16) car celles-ci varient toutefois les intitulés ne changent pas.
Je ne sais pas si je me fais vraiment comprendre donc je vais laisser un exemple:
10 Avant la journée
11 J'ai entendu un bruit
12 Puis je me suis levée
13 ...
14 Après la journée
15. Tout est en ordre
Je vous remercie d'avance de votre précieuse aide
Voilà je souhaite faire une macro qui me permettrait de supprimer toutes les lignes excel qui sont compris entre deux lignes intitulées : "Avant la journée" jusqu'à "Après la journée". (Il faudrait aussi supprimer "Avant la journée" et "Après la journée")
Ces lignes ne sont pas vides. Je ne peux pas supprimer juste avec des numéros (ex de la ligne 8 à 16) car celles-ci varient toutefois les intitulés ne changent pas.
Je ne sais pas si je me fais vraiment comprendre donc je vais laisser un exemple:
10 Avant la journée
11 J'ai entendu un bruit
12 Puis je me suis levée
13 ...
14 Après la journée
15. Tout est en ordre
Je vous remercie d'avance de votre précieuse aide
A voir également:
- VBA: Fonction de ...à
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
4 réponses
Bonjour,
en colonne A uniquement ?
Texte seul dans la cellule ou pouvant seulement en faire partie ?
Si un seul des textes détecté, ne rien faire ou supprimer depuis début ou jusqu'à la fin ?
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
en colonne A uniquement ?
Texte seul dans la cellule ou pouvant seulement en faire partie ?
Si un seul des textes détecté, ne rien faire ou supprimer depuis début ou jusqu'à la fin ?
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Bonjour,
Non, il y a du texte dans les colonnes A,B,C,D,E,F,G,H.
Pour illustrer mes propos j'ai pris un exemple simple.
Il y a que du texte dans les cellules et des nombres
J'ai pas compris la dernière question, toutefois le texte peut varier (ainsi que le nombre de ligne entre "Avant la journée" et"Après la journée". )
Non, il y a du texte dans les colonnes A,B,C,D,E,F,G,H.
Pour illustrer mes propos j'ai pris un exemple simple.
Il y a que du texte dans les cellules et des nombres
J'ai pas compris la dernière question, toutefois le texte peut varier (ainsi que le nombre de ligne entre "Avant la journée" et"Après la journée". )
Bonjour, Eric
ca faisait longtemps que nous nous étions croisés, Eric :)
essaies cette fonction personnalisée
dans ton cas si recherche dans colonneA
supprime_entre"avant la journée", "après la journée", "A")
Michel
ca faisait longtemps que nous nous étions croisés, Eric :)
essaies cette fonction personnalisée
Function supprime_entre(Debut As String, Fin As String, Colonne As String)
Dim Depart As Integer, Arret As Integer
On Error GoTo vide
Depart = Columns(Colonne).Find(what:=Debut, after:=Cells(1, Colonne), lookat:=xlWhole).Row
Arret = Columns(Colonne).Find(what:=Fin, after:=Cells(1, Colonne), lookat:=xlWhole).Row
Range(Cells(Depart, "A"), Cells(Arret, "H")).Delete
vide:
End Function
dans ton cas si recherche dans colonneA
supprime_entre"avant la journée", "après la journée", "A")
Michel
Bonjour michel_m,
L'appel de la fonction se ferait ainsi :
=supprime_entre("avant la journée", "après la journée", "A")
mais une fonction ne peut pas supprimer des lignes !
=> il faut convertir la Function en Sub.
Puis il faudra l'appeler ainsi :
supprime_entre "avant la journée", "après la journée", "A"
Je te laisse le soin de faire la conversion.
Cordialement
Bonjour Miriade
excuses mon erreur!
le code
et la maquette de travail
https://mon-partage.fr/f/OALImicg/
en espèrant que...
excuses mon erreur!
le code
Option Explicit
'----------------------------------------------
Function supprime_entre(Debut As String, Fin As String, Colonne As String)
'supprime les lignes définies à partir d'une valeur d'entrée et une valeur de sortie _
(incluses dans la suppression)
Dim Depart As Integer, Arret As Integer
Depart = Columns(Colonne).Find(what:=Debut, after:=Cells(1, Colonne), lookat:=xlWhole).Row
Arret = Columns(Colonne).Find(what:=Fin, after:=Cells(1, Colonne), lookat:=xlWhole).Row
Range(Cells(Depart, 1), Cells(Arret, 16384)).Delete
End Function
Sub test()
Sheets(1).Activate
On Error GoTo vide:
Call supprime_entre("papa", "maman", "A")
vide:
MsgBox " problème de définition d'une (des) limite(s) d'action", vbCritical
End Sub
et la maquette de travail
https://mon-partage.fr/f/OALImicg/
en espèrant que...