Supprimer la ligne si le premier caractère est un chiffre

excel12

XLDnaute Nouveau
Bonjour! :)

J'ai plus de 2000 lignes dans Excel.
Je souhaite supprimer toutes les lignes dont le premier caractère est un chiffre.
Chaque lignes est espacé d'un retour de ligne.


Donc, si j'ai ces 5 lignes par exemple:
ABC

5FG

ZM5

89L

W99

Il doit seulement me rester ces 3 lignes sans d'espace entre elles:
ABC
ZM5
W99

Est-ce que vous avez quelques idées?:confused:

Merci!:)

Excel12
 

Staple1600

XLDnaute Barbatruc
Re : Supprimer la ligne si le premier caractère est un chiffre

Bonsoir à tous

excel12
Pourquoi ouvrir un second fil??
https://www.excel-downloads.com/thr...i-le-premier-caractere-est-un-chiffre.212404/
D'autant plus que tu as des solutions dans le premier, non ?
Et je te redis que cette solution fonctionne
https://www.excel-downloads.com/thr...i-le-premier-caractere-est-un-chiffre.212404/
Si tu fais bien tout ce que j'écris dans ce message ...

EDITION: Bonsoir Valentin_Loupe, bonjour job75 ;)
 
Dernière édition:

Valentin_Loupe

XLDnaute Occasionnel
Re : Supprimer la ligne si le premier caractère est un chiffre

Bonsoir Excel12, le forum,

Ci-joint, une proposition.

Cordialement,

Valentin
 

Pièces jointes

  • Classeur1.xlsm
    17.6 KB · Affichages: 63
  • Classeur1.xlsm
    17.6 KB · Affichages: 80
  • Classeur1.xlsm
    17.6 KB · Affichages: 78

job75

XLDnaute Barbatruc
Re : Supprimer la ligne si le premier caractère est un chiffre

Bonjour excel12, Jean-Marie, Valentin_Loupe,

Au post #1 on parle de retour ligne, donc voyez le fichier joint avec cette macro :

Code:
Sub Nettoyage()
Dim r As Range, t, i As Long, s, j As Integer
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)(2))
t = r 'matrice (plus rapide) avec au moins 2 éléments
For i = 1 To UBound(t)
  s = Split(t(i, 1), vbLf)
  For j = 0 To UBound(s)
    If Left(s(j), 1) Like "#*" Then s(j) = Chr(1)
  Next
  t(i, 1) = Join(s, vbLf)
  t(i, 1) = Replace(t(i, 1), Chr(1) & vbLf, "")
  t(i, 1) = Replace(t(i, 1), vbLf & Chr(1), "")
  t(i, 1) = Replace(t(i, 1), Chr(1), "")
Next
r = t
End Sub
Edit : hum bien sûr remplacer If Left(s(j), 1) Like "#*" Then s(j) = Chr(1) par

Code:
If s(j) Like "#*" Then s(j) = Chr(1)
A+
 

Pièces jointes

  • Nettoyage(1).xls
    44 KB · Affichages: 54
Dernière édition:

job75

XLDnaute Barbatruc
Re : Supprimer la ligne si le premier caractère est un chiffre

Re,

Si une cellule en colonne A se retrouve vide, on peut supprimer toute la ligne :

Code:
Sub Nettoyage()
Dim r As Range, t, i As Long, s, j As Integer
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)(2))
t = r 'matrice (plus rapide) avec au moins 2 éléments
For i = 1 To UBound(t)
  s = Split(t(i, 1), vbLf)
  For j = 0 To UBound(s)
    If Left(s(j), 1) Like "#*" Then s(j) = Chr(1)
  Next
  t(i, 1) = Join(s, vbLf)
  t(i, 1) = Replace(t(i, 1), Chr(1) & vbLf, "")
  t(i, 1) = Replace(t(i, 1), vbLf & Chr(1), "")
  t(i, 1) = Replace(t(i, 1), Chr(1), "")
Next
r = t
'---suppression facultative des cellules vides---
r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Voir la cellule A5 dans ce fichier (2).

Edit : hum bien sûr remplacer If Left(s(j), 1) Like "#*" Then s(j) = Chr(1) par

Code:
If s(j) Like "#*" Then s(j) = Chr(1)
A+
 

Pièces jointes

  • Nettoyage(2).xls
    44.5 KB · Affichages: 70
Dernière édition:

job75

XLDnaute Barbatruc
Re : Supprimer la ligne si le premier caractère est un chiffre

Re,

Une autre manière avec ce fichier (3) :

Code:
Sub Nettoyage()
Dim r As Range, t, i As Long, s, txt As String, j As Integer
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)(2))
t = r 'matrice (plus rapide) avec au moins 2 éléments
For i = 1 To UBound(t)
  s = Split(t(i, 1), vbLf)
  txt = ""
  For j = 0 To UBound(s)
    If Not s(j) Like "#*" Then txt = txt & vbLf & s(j)
  Next
  t(i, 1) = Mid(txt, 2)
Next
r = t
'---suppression facultative des cellules vides---
r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Sur 3000 lignes c'est à peine plus rapide.

A+
 

Pièces jointes

  • Nettoyage(3).xls
    43.5 KB · Affichages: 58

job75

XLDnaute Barbatruc
Re : Supprimer la ligne si le premier caractère est un chiffre

Re,

S'il y a des retours ligne superflus qu'on veut éliminer utiliser :

Code:
Sub Nettoyage()
Dim r As Range, t, i As Long, s, txt As String, j As Integer
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)(2))
t = r 'matrice (plus rapide) avec au moins 2 éléments
For i = 1 To UBound(t)
  s = Split(t(i, 1), vbLf)
  txt = ""
  For j = 0 To UBound(s)
    If Trim(s(j)) <> "" And Not s(j) Like "#*" Then txt = txt & vbLf & s(j)
  Next
  t(i, 1) = Mid(txt, 2)
Next
r = t
'---suppression facultative des cellules vides---
r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Fichier (4).

A+
 

Pièces jointes

  • Nettoyage(4).xls
    37.5 KB · Affichages: 61

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35