OVH Cloud OVH Cloud

annulation de ligne sous conditions

8 réponses
Avatar
DJ9B
Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide pour
annuler toute les lignes d'une feuille qui ne contiendraient pas en colonne
A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres seront
systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou encore du
texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un feuille, il
est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !
--
Inlève_Cha_dj9b@free.fr

8 réponses

Avatar
seb
Salut,

tu peux essayer ca :

Sub suppr_lignes()
Dim I As Integer
For I = 1 To 300
If ActiveCell.Value = "" Or Len(ActiveCell.Text) <> 12 _
Or IsNumeric(ActiveCell.Value) = False Then
ActiveCell.EntireRow.Select
Selection.Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Next I
End Sub

ca devrais etre bon ????
ca teste si la valeur de la cellule est vide ou de longueur differnte de 12
ou si ce n'est pas un chiffre et dans ce cas supprime la ligne sinon passe à
la ligne suivante.

Amicalement.

"DJ9B" <Inlè a écrit dans le message de news:

Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide pour
annuler toute les lignes d'une feuille qui ne contiendraient pas en
colonne

A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres seront
systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou encore du
texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un feuille,
il

est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !
--
Inlè






Avatar
isabelle
bonjour Seb,

je commencerais par la fin pour ne pas manquer de lignes,
ce qui peux se produire dans une boucle avec Delete Shift:=xlUp

Sub suppr_lignes()
Dim i As Integer
For i = 300 To 2 Step -1
If Range("A" & i).Value = "" Or Len(Range("A" & i).Text) <> 12 _
Or IsNumeric(Range("A" & i).Value) = False Then
Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub

isabelle


Salut,

tu peux essayer ca :

Sub suppr_lignes()
Dim I As Integer
For I = 1 To 300
If ActiveCell.Value = "" Or Len(ActiveCell.Text) <> 12 _
Or IsNumeric(ActiveCell.Value) = False Then
ActiveCell.EntireRow.Select
Selection.Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Next I
End Sub

ca devrais etre bon ????
ca teste si la valeur de la cellule est vide ou de longueur differnte de 12
ou si ce n'est pas un chiffre et dans ce cas supprime la ligne sinon passe à
la ligne suivante.

Amicalement.

"DJ9B" <Inlè a écrit dans le message de news:

Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide pour
annuler toute les lignes d'une feuille qui ne contiendraient pas en
colonne

A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres seront
systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou encore du
texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un feuille,
il

est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !
--
Inlè








Avatar
docm
Je remplacerais Len(Range("A" & i).Text) <> 12
par Len(Range("A" & i).Value) <> 12

Sous toutes réserves.

Sub suppr_lignes()
Dim I As Long
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete

For I = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsDate(Cells(I, 1).Value) _
Or Not IsNumeric(Cells(I, 1).Value) _
Or Len(Cells(I, 1).Value) <> 12 Then

Rows(I).Delete

End If
Next
End Sub

"isabelle" wrote in message
news:
bonjour Seb,

je commencerais par la fin pour ne pas manquer de lignes,
ce qui peux se produire dans une boucle avec Delete Shift:=xlUp

Sub suppr_lignes()
Dim i As Integer
For i = 300 To 2 Step -1
If Range("A" & i).Value = "" Or Len(Range("A" & i).Text) <> 12 _
Or IsNumeric(Range("A" & i).Value) = False Then
Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub

isabelle


Salut,

tu peux essayer ca :

Sub suppr_lignes()
Dim I As Integer
For I = 1 To 300
If ActiveCell.Value = "" Or Len(ActiveCell.Text) <> 12 _
Or IsNumeric(ActiveCell.Value) = False Then
ActiveCell.EntireRow.Select
Selection.Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Next I
End Sub

ca devrais etre bon ????
ca teste si la valeur de la cellule est vide ou de longueur differnte de
12


ou si ce n'est pas un chiffre et dans ce cas supprime la ligne sinon
passe à


la ligne suivante.

Amicalement.

"DJ9B" <Inlè a écrit dans le message de news:

Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide
pour



annuler toute les lignes d'une feuille qui ne contiendraient pas en
colonne

A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres seront
systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou encore
du



texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un
feuille,



il
est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !
--
Inlè










Avatar
DJ9B
Merci à vous 3 pour votre contribution !

--
Inlè
"docm" a écrit dans le message de
news:%
Je remplacerais Len(Range("A" & i).Text) <> 12
par Len(Range("A" & i).Value) <> 12

Sous toutes réserves.

Sub suppr_lignes()
Dim I As Long
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete

For I = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsDate(Cells(I, 1).Value) _
Or Not IsNumeric(Cells(I, 1).Value) _
Or Len(Cells(I, 1).Value) <> 12 Then

Rows(I).Delete

End If
Next
End Sub

"isabelle" wrote in message
news:
bonjour Seb,

je commencerais par la fin pour ne pas manquer de lignes,
ce qui peux se produire dans une boucle avec Delete Shift:=xlUp

Sub suppr_lignes()
Dim i As Integer
For i = 300 To 2 Step -1
If Range("A" & i).Value = "" Or Len(Range("A" & i).Text) <> 12 _
Or IsNumeric(Range("A" & i).Value) = False Then
Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub

isabelle


Salut,

tu peux essayer ca :

Sub suppr_lignes()
Dim I As Integer
For I = 1 To 300
If ActiveCell.Value = "" Or Len(ActiveCell.Text) <> 12 _
Or IsNumeric(ActiveCell.Value) = False Then
ActiveCell.EntireRow.Select
Selection.Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Next I
End Sub

ca devrais etre bon ????
ca teste si la valeur de la cellule est vide ou de longueur differnte
de



12
ou si ce n'est pas un chiffre et dans ce cas supprime la ligne sinon
passe à


la ligne suivante.

Amicalement.

"DJ9B" <Inlè a écrit dans le message de news:

Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide
pour



annuler toute les lignes d'une feuille qui ne contiendraient pas en
colonne

A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres
seront




systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou
encore




du
texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un
feuille,



il
est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !
--
Inlè














Avatar
GD
Bonsour® ti zote, j't'arconnos t'es d'min coin....
tu parles bien en colonne A de nombres ???? 820000000000 etc....
alors :

Sub Loranger()
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<820000000000",
Operator:=xlOr _
, Criteria2:=">829999999999"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
End Sub
;o)))





dans news:,
DJ9B <Inlè typed:
Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide
pour annuler toute les lignes d'une feuille qui ne contiendraient pas
en colonne A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres seront
systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou
encore du texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un
feuille, il est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !


Avatar
DJ9B
Merci min GeeDee !
Mais car ya un "mais", la macro ne m'annule pas les dates ainsi que les
textes qui se retrouvent en dessous de mes fameux numéros :o( !!!


--
Inlè
"GD" a écrit dans le message de
news:
Bonsour® ti zote, j't'arconnos t'es d'min coin....
tu parles bien en colonne A de nombres ???? 820000000000 etc....
alors :

Sub Loranger()
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<820000000000",
Operator:=xlOr _
, Criteria2:=">829999999999"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
End Sub
;o)))





dans news:,
DJ9B <Inlè typed:
Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide
pour annuler toute les lignes d'une feuille qui ne contiendraient pas
en colonne A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres seront
systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou
encore du texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un
feuille, il est donc inutile d'annuler les lignes entre 301 et 65536 .
Merci d'avance !






Avatar
GD
Bonsour® Laurent,
si t'es d'ichi, parle comme ichi !!!
j'avais compris que la colonne A ne contenait que des nombres....

pour les dates je suis étonné ???
une date est un nombre en tout etat de cause inferieur à 820000000000

mais il suffit de doubler le filtrage ;-)))

Sub Loranger()
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<820000000000",
Operator:=xlOr _
, Criteria2:=">829999999999"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
'-----on filtre maintenant les textes inferieurs à z (ou alt+0255)
[A2].Select
Selection.AutoFilter Field:=1, Criteria1:="<z"
'Selection.AutoFilter Field:=1, Criteria1:="<ÿ"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
End Sub



dans news:%,
DJ9B <Inlè typed:
Merci min GeeDee !
Mais car ya un "mais", la macro ne m'annule pas les dates ainsi que
les textes qui se retrouvent en dessous de mes fameux numéros :o( !!!


Bonsour® ti zote, j't'arconnos t'es d'min coin....
tu parles bien en colonne A de nombres ???? 820000000000 etc....
alors :

Sub Loranger()
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<820000000000",
Operator:=xlOr _
, Criteria2:=">829999999999"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
End Sub
;o)))





dans news:,
DJ9B <Inlè typed:
Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide
pour annuler toute les lignes d'une feuille qui ne contiendraient
pas en colonne A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres
seront systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou
encore du texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un
feuille, il est donc inutile d'annuler les lignes entre 301 et
65536 . Merci d'avance !






Avatar
DJ9B
Cha va toudi pas im reste puc l'premiere ligne :o( !
L'mieux ché j'ai pu un seul d'mes nombre à 12 chiffres !
lol !

--
Inlè
"GD" a écrit dans le message de
news:
Bonsour® Laurent,
si t'es d'ichi, parle comme ichi !!!
j'avais compris que la colonne A ne contenait que des nombres....

pour les dates je suis étonné ???
une date est un nombre en tout etat de cause inferieur à 820000000000

mais il suffit de doubler le filtrage ;-)))

Sub Loranger()
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<820000000000",
Operator:=xlOr _
, Criteria2:=">829999999999"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
'-----on filtre maintenant les textes inferieurs à z (ou alt+0255)
[A2].Select
Selection.AutoFilter Field:=1, Criteria1:="<z"
'Selection.AutoFilter Field:=1, Criteria1:="<ÿ"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
End Sub



dans news:%,
DJ9B <Inlè typed:
Merci min GeeDee !
Mais car ya un "mais", la macro ne m'annule pas les dates ainsi que
les textes qui se retrouvent en dessous de mes fameux numéros :o( !!!


Bonsour® ti zote, j't'arconnos t'es d'min coin....
tu parles bien en colonne A de nombres ???? 820000000000 etc....
alors :

Sub Loranger()
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<820000000000",
Operator:=xlOr _
, Criteria2:=">829999999999"
Range("A2:C301").Select
Selection.EntireRow.Delete
Selection.AutoFilter
End Sub
;o)))





dans news:,
DJ9B <Inlè typed:
Bonjour à tous !
Je voudrai connaître la manière la plus efficace et la plus rapide
pour annuler toute les lignes d'une feuille qui ne contiendraient
pas en colonne A un nombre à 12 chiffres tel que 822200123456.
Ce nombre commence toujours par 82 mais les 10 autres chiffres
seront systématiquement différents.
Les lignes à annuler peuvent être soit vides, soit des dates ou
encore du texte.
Dernière précision je n'utilise jamais plus de 300 lignes sur un
feuille, il est donc inutile d'annuler les lignes entre 301 et
65536 . Merci d'avance !