Microsoft 365 Fichier Excel extrait avec cellules "vides' contenant un espace

mapapiotmi

XLDnaute Nouveau
Bonjour,

Je dois travailler sur un fichier Excel extrait qui contient des cellules sensées vides mais contenant un espace ou autres caractères. Cela fausse les calculs.

Comment sélectionner ces cellules et effacer le contenu dans avoir à le faire colonne par colonne

Je vous joint un exemple avec quelques lignes

Merci à vous

Martine
 

Pièces jointes

  • Copie de EDEC TEST.xlsx
    169.9 KB · Affichages: 17

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Mapapiotmi,
La macro ci dessous nettoie les cellules des espaces avant et après.
Dans la PJ il en a trouvé 12308.
A tester.
VB:
Sub Nettoie()
N = 0
For L = 1 To 360
    For C = 1 To 78
        Chaine = Trim(Cells(L, C))
        If Chaine <> Cells(L, C) Then
             Cells(L, C) = Chaine
             N = N + 1
        End If
    Next C
Next L
End Sub
NB : La PJ est déjà néttoyée.
 

Pièces jointes

  • Copie de EDEC TEST.xlsm
    208.3 KB · Affichages: 6

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir Mapapiotmi,

On a affaire au fameux caractère "chaine vide".
Pour les supprimer, on peut utiliser la macro ci-dessous. Le code est dans module1.

Pour vérifier (étape 1) :
  • sélectionner les colonnes W à Z
  • tapez F5
  • cliquer sur le bouton Cellules...
  • double-cliquer sur Cellules vides
  • les cellules vraiment vides sont sélectionnées. On peut constater que les cellules W2 à Z3 ne sont pas sélectionnées. Elles contiennent cette fameuse chaine "vide".

Exécuter la macro EffacerPseudoVide (étape 2) :

Pour vérifier (étape 3) :
  • sélectionner à nouveau les colonnes W à Z
  • tapez F5
  • cliquer sur le bouton Cellules...
  • double-cliquer sur Cellules vides
  • les cellules vraiment vides sont sélectionnées. On peut constater que les cellules W2 à Z3 sont maintenant sélectionnées. Elles ne contiennent plus cette fameuse chaine "vide".
edit : version simplifiée v1a
VB:
Sub EffacerPseudoVide()
Dim i&, j&, n&, t, v

   With Sheets("EDEC_XLSL_PREC")
      Application.ScreenUpdating = False
      If .FilterMode Then .ShowAllData
      t = .Range("a1").CurrentRegion.Formula
      For i = 1 To UBound(t)
         For j = 1 To UBound(t, 2)
            If Len(t(i, j)) = 0 Then t(i, j) = Empty: n = n + 1
         Next j
      Next i
      .Range("a1").Resize(UBound(t), UBound(t, 2)) = t
      MsgBox n & " cellules vides ou pseudo-vides effacées"
   End With
End Sub
 

Pièces jointes

  • mapapiotmi- effacer cellules pseudo-vides- v1a.xlsm
    181 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir Mapapiotmi, , sylvanu, mapomme,

Oui il faut supprimer aussi les textes vides "" donc utiliser :
VB:
Sub Vider()
Dim tablo, ncol%, i&, j%
With ActiveSheet.UsedRange
    ncol = .Columns.Count
    tablo = .Resize(, IIf(ncol = 1, 2, ncol)).Formula 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(tablo)
        For j = 1 To ncol
            If Trim(tablo(i, j)) = "" Then tablo(i, j) = Empty
    Next j, i
    .Value = tablo
End With
End Sub
Bah c'est très semblable à la macro de mapomme...

Bonne nuit.
 

job75

XLDnaute Barbatruc
Bon il y a plus simple :
VB:
Sub Vider()
Dim tablo, ncol%, i&, j%
With ActiveSheet.UsedRange
    ncol = .Columns.Count
    tablo = .Resize(, IIf(ncol = 1, 2, ncol)).Formula 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(tablo)
        For j = 1 To ncol
            tablo(i, j) = Trim(tablo(i, j))
    Next j, i
    .Value = tablo
End With
End Sub
Et en prime on supprime les espaces superflus en début et fin de chaîne.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Tu as tort car Martine a écrit au post #1 :

Je dois travailler sur un fichier Excel extrait qui contient des cellules sensées vides mais contenant un espace ou autres caractères

Certes. J'ai interprété - sans doute à tort - que Martine parlait de cellules qui semblaient vides mais qui ne l'étaient pas (et que Martine ne savait pas ce que contenaient ces cellules pseudo-vides). C'est pour cette raison que je n'ai pas traité les cellules ne contenant que des espaces (cellules qui pour moi ne sont pas vides).
Pour une fois que j'ai lu avec attention une question, je me suis planté :(.

Allez, je me couche pour de bon.

Bonnet de nuit pour tous ;)
 

Discussions similaires

Réponses
3
Affichages
339

Statistiques des forums

Discussions
311 720
Messages
2 081 920
Membres
101 840
dernier inscrit
SamynoT