Bonjour,
Je dispose d'un fichier excel et je veux supprimer les lignes dont les cellules des deux premières colonnes sont vides. Or mon code avec If Cells(i,1)="" And Cells(i,2)="" Then ne marche pas, car il se trouve que mes cellules ne sont pas vides et contiennent un saut de ligne.
Problème: je ne sais pas comment coder "If Cells(...) contient un saut à la ligne". Savez-vous si c'est possible?
Et si non, avez-vous des astuces qui me permettraient d'arriver au résultat? J'ai pensé par exemple à "If Cells(...) ne contient pas de lettre", ce qui reviendrait au même vu mon fichier.
Merci beaucoup pour vos réponses!
Laurène
Edit:
Vous trouverez ici mon fichier excel: https://www.dropbox.com/s/99vltlywwlvpi82/exemple.xlsx?dl=0
et voici mon code entier:
Sub nettoyage_lignes()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Sheets("Travail")
Dim n As Integer, i As Integer, j As Integer, k As Integer
Dim Tableau() As String
n = ws.Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 'Nombre de lignes du fichier
j = 0
For i = 1 To n
If ws.Cells(i, 1) = CrLf And ws.Cells(i, 2) = CrLf Then 'On trouve les lignes vides (attention les cellules contiennent des sauts de ligne)
j = j + 1
ReDim Tableau(j)
Tableau(j) = i
MsgBox ("ok") 'Pour vérifier si on rentre dans la boucle if, et le fait est que non..!
End If
Next i 'On se retrouve avec Tableau contenant les indices de toutes les lignes nulles (il y a j lignes nulles)
For i = 1 To j
l = Tableau(i)
ws.Cells(l, 1).Select
EntireRow.Delete 'On supprime les lignes nulles
If i <> j Then
For k = i + 1 To j
Tableau(k) = Tableau(k) - 1 'On ajuste l'indice des lignes qui ont bougé suite à la suppression d'une ligne
Next k
End If
Next i
End Sub
Merci de ta réponse. J'ai essayé en mettant cette condition (voir mon code en entier dans mon premier post édité) mais cela ne marche toujours pas, on ne rentre pas dans la boucle if. J'ai joint également mon fichier excel.
A mon avis, deux solutions: soit ce n'est pas vbLf qu'il faut mettre, soit ce n'est pas vraiment un saut de ligne qu'il y a dans mes cases (mais alors, quoi?)
Merci pour ton aide!
Laurène
Pas de dropbox pour moi, passez par
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
deja crlf ---->VbCrLf:
J'avais déjà essayé avec vbCrLf et ça ne fonctionne pas non plus... (j'ai essayé CrLf après au cas où car je l'avais trouvé quelque part)
Merci beaucoup
Je recupere le fichier et regarde la chose
A+
Suite:
fichier modifie, c'est un vbLf qu'il faut tester et si suppression de ligne commencer par la fin
http://www.cjoint.com/c/GEknDbbRInf
Par contre, je n'ai toujours pas compris pourquoi quand j'ai mis moi-même le vbLf la condition n'étais pas satisfaite...mais bon
Merci beaucoup pour le temps que tu m'as accordé ! :-)
Bonne journée