OVH Cloud OVH Cloud

Macro excel VBA - Selection lignes jusqu'à ligne contenant "x"

5 réponses
Avatar
Mathieu38G
Bonjour,

Existe-t-il une commande permettant de sélectionner toutes les lignes d'un tableau situées entre "telle cellule contenant mot X" et "telle cellule contenant mot Y" ?

En fait j'ai besoin dans un tableau de supprimer toujours les mêmes lignes contenant des valeurs qui ne m'intéressent pas. Seulement le souci c'est que dans certains cas, il y a des lignes supplémentaires qui se trouvent alors sur une ligne prévue pour être supprimée.

Es-ce que quelqu'un peut m'aider ?

Merci beaucoup par avance.


Mathieu.

5 réponses

Avatar
MichD
Bonjour,
'-------------------------------------------------------
Sub test()
Dim Rg As Range, Rg1 As Range
Dim PremierMot As String
Dim DernierMot As String
PremierMot = "toto"
DernierMot = "titi"
With Worksheets("Feuil1") 'Nom de la feuille à adapter
Set Rg = .Cells.Find(what:=PremierMot, LookIn:=xlValues, lookat:=xlWhole)
Set Rg1 = .Cells.Find(what:ÞrnierMot, LookIn:=xlValues, lookat:=xlWhole)
If Not Rg Is Nothing And Not Rg1 Is Nothing Then
'Efface les données et les formats de cellules
.Range(Rg, Rg1).Clear
'Supprime la plage de cellules
'.Range(Rg, Rg1).Delete shift:=xlUp ' OU xlToLeft
End If
End With
End Sub
'-------------------------------------------------------
MichD
"Mathieu38G" a écrit dans le message de groupe de discussion :
Bonjour,
Existe-t-il une commande permettant de sélectionner toutes les lignes d'un
tableau situées entre "telle cellule contenant mot X" et "telle cellule
contenant mot Y" ?
En fait j'ai besoin dans un tableau de supprimer toujours les mêmes lignes
contenant des valeurs qui ne m'intéressent pas. Seulement le souci c'est que
dans certains cas, il y a des lignes supplémentaires qui se trouvent alors sur
une ligne prévue pour être supprimée.
Es-ce que quelqu'un peut m'aider ?
Merci beaucoup par avance.
Mathieu.
Avatar
Jacquouille
Bonsoir Mathieu,
Voici ce que j'ai trouvé.
La plage à analyser = A:A
B1 et B2 contenant les bornes.
Le top étant de déclarer les variables x et y. A toi de savoir....
Mon vieux 2003 le fait auto pour moi. -))
Je ne sais pas faire plus court.
----------------
Sub Efface_entre_bornes()
x = [match(b1,A:A,0)]
y = [match(b2,A:A,0)]
Range("A" & x & ":" & "A" & y).Clear
End Sub
---------------------------------------------
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Mathieu38G" a écrit dans le message de groupe de discussion :
Bonjour,
Existe-t-il une commande permettant de sélectionner toutes les lignes d'un
tableau situées entre "telle cellule contenant mot X" et "telle cellule
contenant mot Y" ?
En fait j'ai besoin dans un tableau de supprimer toujours les mêmes lignes
contenant des valeurs qui ne m'intéressent pas. Seulement le souci c'est que
dans certains cas, il y a des lignes supplémentaires qui se trouvent alors
sur
une ligne prévue pour être supprimée.
Es-ce que quelqu'un peut m'aider ?
Merci beaucoup par avance.
Mathieu.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Jacquouille
Re
Ce filet de macro efface aussi les bornes.
Sub Efface_aussi_bornes()
x = [match(b1,A:A,0)]
y = [match(b2,A:A,0)]
Range("A" & x & ":" & "A" & y).Clear
End Sub
------------------------------------------
Si tu veux garder celles-ci, voici qui efface ENTRE les bornes et garde
celles-ci
Sub Efface_entre_bornes()
x = Evaluate("=match(b1,A:A,0)") 'evaluate = crochets = formule
y = [match(b2,A:A,0)] 'Equiv(B2;A:A;0)
If y - x < 2 Then
Exit Sub
Else:
Range("A" & x + 1 & ":" & "A" & y - 1).Clear
End If
End Sub
---------------------------------
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Jacquouille" a écrit dans le message de groupe de discussion :
o4c1dk$1oni$
Bonsoir Mathieu,
Voici ce que j'ai trouvé.
La plage à analyser = A:A
B1 et B2 contenant les bornes.
Le top étant de déclarer les variables x et y. A toi de savoir....
Mon vieux 2003 le fait auto pour moi. -))
Je ne sais pas faire plus court.
----------------
Sub Efface_entre_bornes()
x = [match(b1,A:A,0)]
y = [match(b2,A:A,0)]
Range("A" & x & ":" & "A" & y).Clear
End Sub
---------------------------------------------
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Mathieu38G" a écrit dans le message de groupe de discussion :
Bonjour,
Existe-t-il une commande permettant de sélectionner toutes les lignes d'un
tableau situées entre "telle cellule contenant mot X" et "telle cellule
contenant mot Y" ?
En fait j'ai besoin dans un tableau de supprimer toujours les mêmes lignes
contenant des valeurs qui ne m'intéressent pas. Seulement le souci c'est que
dans certains cas, il y a des lignes supplémentaires qui se trouvent alors
sur
une ligne prévue pour être supprimée.
Es-ce que quelqu'un peut m'aider ?
Merci beaucoup par avance.
Mathieu.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
mathieu38g
Le dimanche 01 Janvier 2017 à 12:06 par Mathieu38G :
Bonjour,
Existe-t-il une commande permettant de sélectionner toutes les lignes
d'un tableau situées entre "telle cellule contenant mot X" et
"telle cellule contenant mot Y" ?
En fait j'ai besoin dans un tableau de supprimer toujours les mêmes
lignes contenant des valeurs qui ne m'intéressent pas. Seulement le
souci c'est que dans certains cas, il y a des lignes supplémentaires qui
se trouvent alors sur une ligne prévue pour être
supprimée.
Es-ce que quelqu'un peut m'aider ?
Merci beaucoup par avance.
Mathieu.
Bonjour,
Merci beaucoup pour vos conseils ! Je vais tester ca, j'vous tiens au courant ;).
A bientôt.
Avatar
mathieu38g
Le dimanche 01 Janvier 2017 à 15:05 par MichD :
Bonjour,
'-------------------------------------------------------
Sub test()
Dim Rg As Range, Rg1 As Range
Dim PremierMot As String
Dim DernierMot As String
PremierMot = "toto"
DernierMot = "titi"
With Worksheets("Feuil1") 'Nom de la feuille à adapter
Set Rg = .Cells.Find(what:=PremierMot, LookIn:=xlValues, lookat:=xlWhole)
Set Rg1 = .Cells.Find(what:ÞrnierMot, LookIn:=xlValues, lookat:=xlWhole)
If Not Rg Is Nothing And Not Rg1 Is Nothing Then
'Efface les données et les formats de cellules
.Range(Rg, Rg1).Clear
'Supprime la plage de cellules
'.Range(Rg, Rg1).Delete shift:=xlUp ' OU xlToLeft
End If
End With
End Sub
'-------------------------------------------------------
MichD
"Mathieu38G" a écrit dans le message de groupe de discussion
:
Bonjour,
Existe-t-il une commande permettant de sélectionner toutes les lignes
d'un
tableau situées entre "telle cellule contenant mot X" et
"telle cellule
contenant mot Y" ?
En fait j'ai besoin dans un tableau de supprimer toujours les mêmes
lignes
contenant des valeurs qui ne m'intéressent pas. Seulement le souci c'est
que
dans certains cas, il y a des lignes supplémentaires qui se trouvent
alors sur
une ligne prévue pour être supprimée.
Es-ce que quelqu'un peut m'aider ?
Merci beaucoup par avance.
Mathieu.
Bonjour et merci beaucoup pour avoir pris le temps de m'aider.
Votre script (que j'ai adapté pour mon cas) fonctionne impéc !!!!! Merci beaucoup ;).
Bonne journée.
Mathieu.