Bonjour,
J'ai un fichier issu d'un système à traiter avec grosso modo 1000 lignes sur un trentaine de colonnes.
J'arrive à l'ouvrir avec opentxt et à supprimer les espace inutiles, cependant il me reste des cellules apparemment vides qui ne le sont pas.
Vous trouverez ci-joint un extrait d'une colonne qui me pose souci, avec une colonne "Test vide" dans laquelle les seules cellules reconnues comme vides sont celles pour lesquelles j'ai utilisé la touche "Suppr" pour supprimer les données. J'ai choisi la mise en forme "Soulignée" afin de bien voir que je n'ai plus d'espaces inutiles.
Ce dont j'ai besoin est soit :
a. vider réellement les cellules qui n'affichent rien.
b. a défaut de les vider, savoir les identifier.
J'ai bien trouvé une méthode mais je n'ai pas le sentiment qu'elle soit optimale :
a. Filtre la colonne pour ne garder que les "(Vides)".
b. Sélectionner ensuite la colonne et faire "Suppr".
c. Effacer le filtre.
Le code que j'ai utilisé pour ouvrir le fichier est le suivant :
Ensuite pour supprimer les espace j'ai fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 MsgBox "Dans la boîte de dialogue suivante" & vbCrLf & vbCrLf & "veuillez choisir le fichier à traiter" _ & vbCrLf & vbCrLf & "(fdetm).", vbOKOnly + vbInformation, "Choix du fichier" FichierTxt = Application.GetOpenFilename(, , , , False) If TypeName(FichierTxt) = "Boolean" Then Exit Sub Workbooks.OpenText FichierTxt, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Semicolon:=True, _ FieldInfo:=Array(Array(1, 2), Array(2, 5), Array(3, 1), Array(4, 1), Array(5, 2), Array(6, 2), _ Array(7, 2), Array(8, 2), Array(9, 2), Array(10, 2), Array(11, 5), Array(12, 2), Array(13, 2), _ Array(14, 5), Array(15, 5), Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 5), Array(20, 2), _ Array(21, 5), Array(22, 5), Array(23, 5), Array(24, 2), Array(25, 2), Array(26, 2), Array(27, 2), _ Array(28, 2), Array(29, 2), Array(30, 1), Array(31, 9)), _ Local:=True, DecimalSeparator:=".", TrailingMinusNumbers:=True
J'ai également essayé cette autre méthode un peu plus rapide mais qui me pose problème sur les colonnes avec un format de date, certaines cellules ne sont plus reconnues comme des dates.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each Cellule In Cells.SpecialCells(xlCellTypeConstants, 2) Cellule.Value = Application.Trim(Cellule.Value) Next Cellule
Le code un peu plus haut m'a permis de n'appliquer "trim" qu'aux cellules au format texte ce que je n'ai su faire avec le code ci-dessous. Comme le gain n'est que de 1 à 2 secondes ce n'est pas bien grave mais si quelqu'un avait une idée pour améliorer le code ci-dessous pour conserver mes dates je serais preneur.
Vous remerciant par avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Set Tab_Cel = Range("A1").CurrentRegion Tab_Val = Tab_Cel.Value For i = LBound(Tab_Val) To UBound(Tab_Val) For j = 1 To Tab_Cel.Columns.Count Tab_Val(i, j) = Trim(Tab_Val(i, j)) Next j Next i Tab_Cel.Value = Tab_Val
Amicalement
Partager