XL 2010 avoir des cellules vides

Caroline ;-))

XLDnaute Junior
Bonjour le forum !

Après avoir fait un copier/coller valeurs, je me retrouve avec des cellules qui ne sont pas vides. Or je souhaiterai que ces cellules soient réellement vides afin de réaliser d’autres traitements. Il y a donc quelques choses dans ces cellules, mais quoi ? :
- Ce n’est pas un espace car [la manip ctrl+H : remplacer espace par rien] Excel ne trouve pas d’espace
- Ce n’est pas un espace insécable car j’ai fait =SUBSTITUTE(C11 ;CAR(160) ;"") et cela ne le transforme pas en cellule vide

Donc, je ne sais pas ce qu’il y a dans ces cellules…(exemple : [C8:C28] et [C130:C296] devraient être des cellules vides)

Pour les transformer en cellules vides, j’ai trouvé 2 solutions mais uniquement manuelles ! soit :
-double clic sur la cellule
- taper sur la touche « Suppr » dans la cellule

(Pour vérifier qu’il s’agit bien d’une cellule vide : je les sélectionne > « F5 » > atteindre « cellules… » > Sélectionner « Cellules vides » > ok)

Est-ce que vous avez des idées ? Comment puis-je transformer un grand nombre de cellules (non adjacentes) en cellules vides ? (en ne sachant pas ce qu’il y a à l’intérieur)

Merci pour votre aide.
 

Pièces jointes

  • pb cellules non vide.xlsm
    17.4 KB · Affichages: 53

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Il semblerait que Données/Convertir fasse le job.
Le hic c'est qu'ainsi on est obligé de traiter le document colonne par colonne.

Du coup, par commodité, une macro VBA simplifirait la tâche.
VB:
Sub a()
Dim c As Range
For Each c In ActiveSheet.UsedRange
c.Value = c.Value
Next
End Sub

NB: J'ai teste sans succès le copier/collage valeurs seules et Multiplication.

EDITION: Bonjour pierrejean, désolé pour la collision ;)
 

job75

XLDnaute Barbatruc
Re,

Un p'tit coup de gnole pour les accros du VBA :
Code:
Sub EffacerTextesVides()
Cells.Replace "", "#N/A"
Cells.Replace "#N/A", ""
End Sub
Sur le fichier du post #1 elle s'exécute en 0,44 seconde chez moi (Win 10 Excel 2013).

Même avec Application.ScreenUpdating = False la macro de pierrejean prend 25 secondes.

Et celle de Staple1600 prend 56 secondes.

A+
 

job75

XLDnaute Barbatruc
Re,

Je viens de re-tester, j'obtiens les mêmes résultats qu'hier soir.

J'ai redémarré l'ordi, toujours les mêmes résultats.

Mon ordi a moins de 3 ans, fréquence 1,70 GHz RAM 4,00 Go.

Faut croire qu'Excel 2013 n'aime pas les boucles...

A+
 

job75

XLDnaute Barbatruc
Re,

Par contre pour ces 2 macros c'est quasiment instantané, durée < 0,02 seconde :
Code:
Sub efface()
Dim t, zone As Range
t = Timer
Application.ScreenUpdating = False
For Each zone In Cells.SpecialCells(xlCellTypeConstants).Areas
  zone.Value = zone.Value
Next
Application.ScreenUpdating = True
MsgBox Timer - t
End Sub

Sub a()
Dim t
t = Timer
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
MsgBox Timer - t
End Sub
La 2ème macro (sans boucle) avec le UsedRange est la meilleure solution, l'honneur est sauf JM ;)

A+
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Résultat macro a (avec le fichier du demandeur converti en *.xls, XL2K3 oblige)
*:XP/1,66 GHz/1 Go/Excel 2003
0,15625
avec Application.Screen
0,09375

L'honneur est sauf mais mon café sera brulant ;)

*: Ce n'est pas mon PC d'usage habituel
 

job75

XLDnaute Barbatruc
Re,

J'ai cherché à comprendre pourquoi chez moi les macros de pierrejean et Staple1600 prennent du temps.

J'ai donc exécuté les macros :
Code:
Sub efface()
Dim t, cel As Range
t = Timer
For Each cel In Cells.SpecialCells(xlCellTypeConstants)
  cel.Value = cel 'cel.Value
Next
MsgBox Timer - t
End Sub

Sub a()
Dim t, c As Range
t = Timer
For Each c In ActiveSheet.UsedRange
c.Value = c 'c.Value
Next
MsgBox Timer - t
End Sub
La 1ère s'exécute en 0,08 seconde, la 2ème en 0,12 seconde.

Bien sûr les textes vides ne sont pas effacés mais cela montre que sur mon Excel 2013 ce qui prend du temps c'est la LECTURE de la propriété .Value.

Si vous avez Excel 2013 qu'en est-il chez vous ???

A+
 

Caroline ;-))

XLDnaute Junior
Bonjour Pierrejean, Staple1600 et Job75,

Je reviens de congé et surprise : 3 pères Noël !

Merci beaucoup, les 4 méthodes (avec ou sans VBA) fonctionnent très bien.

Pour la rapidité, je dois dire que je n’ai pas eu le temps de chauffer mon thé, donc c’est super. Je laisse les pros s’amuser avec les dixièmes de secondes. ;)Même une minute, j’aurai été preneuse, cela m’aurait évité de m’arracher les cheveux à la veille des fêtes.:confused:

Un grand merci à tous les 3 et Bonne année 2018 ! :)
 

Discussions similaires

Réponses
9
Affichages
393

Statistiques des forums

Discussions
312 169
Messages
2 085 924
Membres
103 042
dernier inscrit
slfjs