Signaler

Si la cellule contient un "à la ligne" alors... [Résolu]

Posez votre question lau-vaya - Dernière réponse le 10 mai 2017 à 15:48 par lau-vaya
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
Afficher la suite 
Utile
+0
plus moins
Bonjour,

pour test "saut de ligne":

If Cells(i, 1) = vbLf And Cells(i, 2) = vbLf Then
lau-vaya- 10 mai 2017 à 13:56
Bonjour,

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
Répondre
f894009 11693Messages postés dimanche 25 novembre 2007Date d'inscription 26 mai 2017 Dernière intervention - 10 mai 2017 à 14:45
Re,

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:
If ws.Cells(i, 1) = vbCrLf And ws.Cells(i, 2) = vbCrLf Then
Répondre
lau-vaya- 10 mai 2017 à 15:00
Voilà le lien: http://www.cjoint.com/c/GEkm5Er5alg

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
Répondre
f894009 11693Messages postés dimanche 25 novembre 2007Date d'inscription 26 mai 2017 Dernière intervention - 10 mai 2017 à 15:07
Re,

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
Répondre
lau-vaya- 10 mai 2017 à 15:48
Parfait, merci beaucoup, ça marche !

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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !