Cellules vides
Résolu
Beubeu-Wazza
-
Arkana0 Messages postés 6365 Date d'inscription Statut Modérateur Dernière intervention -
Arkana0 Messages postés 6365 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai créer un code un peu barbare qui est censer enlever les # de trois de mes colonnes. Cependant lorsqu'il tombe sur une cellule vide il s'arrête. Si quelqu'un à une piste pour moi. Merci d'avance.
Option Explicit
Public Sub tag()
Dim i As Integer
i = 2
'un peu barbare
For i = i To 1000
Cells(i, 20).Select
If Cells(i, 20).Select = Null Then
i = i + 1
End If
ActiveCell = Right(ActiveCell, Len(ActiveCell) - 1)
Next i
End Sub
J'ai créer un code un peu barbare qui est censer enlever les # de trois de mes colonnes. Cependant lorsqu'il tombe sur une cellule vide il s'arrête. Si quelqu'un à une piste pour moi. Merci d'avance.
Option Explicit
Public Sub tag()
Dim i As Integer
i = 2
'un peu barbare
For i = i To 1000
Cells(i, 20).Select
If Cells(i, 20).Select = Null Then
i = i + 1
End If
ActiveCell = Right(ActiveCell, Len(ActiveCell) - 1)
Next i
End Sub
A voir également:
- Cellules vides
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Comment supprimer les pages vides sur word - Guide
- Concatener deux cellules excel - Guide
- Afficher cellules masquées excel ✓ - Forum Excel
Cependant le but est d'automatiser la requête car on l'utilisera plusieurs fois. En faite je passe du fichier excel à un fichier csv. Je ne veux pas toucher au fichier Excel. Donc je fait ce code dans un fichier csv qui passera lui dans Néo4j.
Regarde bien la structure de ton code : (déboggage, et appuyer sur F8 pour lancer le codee en pas à pas)
Lorsqu'il tombe sur une case vide, il augmente i d'un cran. Ensuite en restant toujours sur cette même case, il applique une formule supposant au moins un caractère sur une case vide -> bug
Une correction rapide à ton code :
Une correction un peu plus élaborée qui te fera gagner beaucoup de temps si tu as affaire à de longs fichiers :
Le fait d'aller activer une cellule prend beaucoup plus de temps que de la travailler sans l'activer. J'avais un programme qui mettait environ un après-midi à tourner avec des Select. Il a été réduit à 1h avec cette méthode...
Cependant il s'arrête toujours à la case vide. Je ne sais pas pourquoi
Le problème vient de ton test "If Cells(i,20).Select = Null"
Primo, c'est Cells(i,20).Value qu'il faut tester et secondo pour tester si une cellule est vide, mieux vaut indiquer "" que Null.
Ensuite le fait d'incrémenter de i si la valeur est nulle peut te faire sauter une case avec du texte., autant donc tester si une cellule n'est pas vide (si c'est le cas agir), autrement laisser la boucle tourner sans d'autres instructions.
J'ai de plus repéré quelques pépites sur mon code optimisé.
Au final ça donne ça :
Je cherchais depuis ce matin une solution pour contourner ce test. C'est vrai que ta condition est géniale !
Merci bien