supprimer des cellules vides au fomat texte

jeep90

XLDnaute Nouveau
Bonjour à tous

J'ai un petit problème pour supprimer des cellules vides
J'ai 2 colonnes de 7000 lignes dont les cellules sont obligatoirement au format texte. Dans l'une de ces colonnes, certaines cellules sont vides. Or, je dois détruire les lignes pour lesquelles des cellules sont vides. Mais Pour EXCEL, une cellule vide au format texte n'est pas .. une cellule vide !!!
Comment dois-je faire pour pouvoir réussir la manip editon/atteindre/cellules vides et supprimer ces lignes ?
Vous en remerciant par avance...
 

ROGER2327

XLDnaute Barbatruc
Re : supprimer des cellules vides au fomat texte

Re...
Pas certain de donner une réponse correcte sans voir le fichier (et son code) en question, mais vous pouvez essayer de tester les cellules concernées par
Code:
[COLOR="DarkSlateGray"][B]If Range("A2") = "" Then...[/B][/COLOR]
au lieu de
Code:
[COLOR="DarkSlateGray"][B]If IsEmpty(Range("A2")) Then...[/B][/COLOR]
Si ce n'est pas de cela dont il s'agit, déposer un extrait du fichier qui pose problème.​
ROGER2327
#2183
 

jeep90

XLDnaute Nouveau
Re : supprimer des cellules vides au fomat texte

Bonsoir ROGER2327
Je viens de lire votre réponse et je remercie de continuer de prendre à coeur mes déboires "exelliens"

Je vous adresse donc un extrait de fichier en question afin que vous voyez le problème de suppression de cellules texte ..

Je reste à votre disposition pour tout renseignement susceptible qui vous serait utile...
 

Pièces jointes

  • test suppress cellules texte.xls
    23.5 KB · Affichages: 52
  • test suppress cellules texte.xls
    23.5 KB · Affichages: 52
  • test suppress cellules texte.xls
    23.5 KB · Affichages: 54

Paritec

XLDnaute Barbatruc
Re : supprimer des cellules vides au fomat texte

Bonjour Jeep Roger le forum

voilà a placer dans ta feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
fin = Feuil1.Range("A65000").End(xlUp).Row
For i = fin To 1 Step -1
If Cells(i, 2) = "" Then Rows(i).EntireRow.Delete
Next
End Sub

a+
Bonne soirée
Papou :)
 

jeep90

XLDnaute Nouveau
Re : supprimer des cellules vides au fomat texte

Merci pour ta réponse cher Papou mais je ne comprends pas..
J'ai placé le code dans un module mais chaque fois, j'ai le message "erreur de compilation inatendu - erreur de syntaxe" sur la première ligne "worksheet_selectionchange... "
je replace a nouveau le tableau test en question:(
 

Pièces jointes

  • test suppress cellules texte.xls
    27 KB · Affichages: 44
  • test suppress cellules texte.xls
    27 KB · Affichages: 47
  • test suppress cellules texte.xls
    27 KB · Affichages: 46

ROGER2327

XLDnaute Barbatruc
Re : supprimer des cellules vides au fomat texte

Re...
Cela ne peut effectivement pas fonctionner pour (au moins) deux raisons.

Dans votre classeur,

1) Le code n'est pas placé au bon endroit.
Vous avez placé la procédure dans un module de classe. Or, s'agissant d'une procédure évènementielle liée à un évènement de feuille (Worksheet_SelectionChange), elle doit être placée dans le module de la feuille à traiter.​

2) Le code est incorrect.
Worksheet_SelectionChange(ByVal Target As Range) doit être précédé de Private Sub.
La procédure doit être terminée par End Sub
De plus,
fin = Feuil1.Range("A65000").End(xlUp).Row
provoque une erreur si Feuil1 n'est pas une variable affectée.
Il faudrait par exemple avoir écrit avant :
Set Feuil1 = Sheets("Feuil1")
Ou mieux, écrire :
Sheets("Feuil1").Range("A65000").End(xlUp).Row
De plus, pourquoi se limiter à 65000 lignes ?
La procédure pourrait s'écrire simplement :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
   For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
      If Cells(i, 2) = "" Then Rows(i).EntireRow.Delete
   Next
End Sub[/B][/COLOR]
à placer dans le module Feuil1. Ce faisant, cette procédure sera appelée à chaque changement de sélection d'une cellule de la feuille "Feuil1". Cela risque de ralentir considérablement le fonctionnement si vous avez un nombre élevé de lignes.
Enfin un telle procédure ne sera jamais exécutée en cliquant sur le bouton "supprimer lignes vides" que vous avez placé sur la feuille.
Je suggère de ne pas utiliser cette procédure évènementielle et d'utiliser celle-ci, placée dans un module standard :
Code:
[COLOR="DarkSlateGray"][B]Sub supprimer_lignes_vides()
Dim i As Long
   With Sheets("Feuil1")
      For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
         If .Cells(i, 2) = "" Then .Rows(i).EntireRow.Delete
      Next
   End With
End Sub[/B][/COLOR]
Il vous suffira alors d'affecter cette procédure à votre bouton pour qu'elle s'exécute à la demande par un clic sur le bouton.
C'est ce qui est fait le classeur joint.​
ROGER2327
#2191
 

Pièces jointes

  • temp.xls
    24 KB · Affichages: 86
  • temp.xls
    24 KB · Affichages: 91
  • temp.xls
    24 KB · Affichages: 87
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : supprimer des cellules vides au fomat texte

Bonjour Roger jeep le forum,
bon bah Roger à réglé ton problème mais je tiens à te dire que ma macro marche si tu la place dans la feuille et non pas dans un module comme l'avais fait
Pour l'action par un bouton oui cela dépend aussi de comment sont alimenté tes feuilles et de la fréquence.Si c'est une liste qui ne bouge pas un bouton est effectivement plus adapté.
bon dimanche à tous
Papou
 

ROGER2327

XLDnaute Barbatruc
Re : supprimer des cellules vides au fomat texte

Bonjour Paritec
Bonjour Roger jeep le forum,
bon bah Roger à réglé ton problème mais je tiens à te dire que ma macro marche si tu la place dans la feuille et non pas dans un module comme l'avais fait
Pour l'action par un bouton oui cela dépend aussi de comment sont alimenté tes feuilles et de la fréquence.Si c'est une liste qui ne bouge pas un bouton est effectivement plus adapté.
bon dimanche à tous
Papou
C'est vrai. Je me rends compte que mon précédent message n'est pas clair. Je faisais référence au classeur de jeep90 dans lequel la procédure n'était pas complète et, surtout, pas au bon endroit. Votre code, lui, placé dans le module de la feuille "Feuil1", et non pas dans un module de classe, fonctionne.
Or, en regardant rapidement la discussion sans trop faire attention, on pourrait croire que je parle de votre procédure. Je vais ajouter une petite ligne pour rendre la chose plus claire.​
Bon dimanche à vous aussi.
ROGER2327
#2194
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : supprimer des cellules vides au fomat texte

Bonjour Roger le forum,
non ne t'inquiète pas j'avais bien compris ton intervention.
A la lecture de tous tes posts, j'ai tellement à apprendre de toi, que tes remarques ne peuvent que faire avancer les choses pas l'inverse.
bon dimanche
Papou :)

EDIT: Roger, j'avais jamais vu que nous étions voisin !!
 
Dernière édition:

jeep90

XLDnaute Nouveau
Re : supprimer des cellules vides au fomat texte

un grand merci à vous deux, c'est exactement cela et ca fonctionne très bien

Bon, déja que je débute avec les module et les SUB et END SUB, alors les PRIVATE SUB, pffff... ca me dépasse encore plus !!:)
Dommage que mon boss ne comprenne pas l'interet d'une formation en VBA pour son personnel :confused:
Grace à vous, j'avance et j'apprend pas à pas... encore merci
 

Discussions similaires

Réponses
8
Affichages
431