Problème VBA cellules vides

Tout d'abord, bonjour à tous,

J'ai hésité quelque temps avant de poster ma demande, mais j'ai effectué au préalable de nombreuses recherches sur le sujet et sur divers forum, mais je n'arrive toujours pas à résoudre mon problème et me permets donc de vous solliciter.

Étant novice dans le domaine des macros vba (1 mois environ) je suis en train de monter une macro pour mon travail permettant de mettre en forme divers fichiers, de les enregistrer sur des serveurs et d'envoyer automatiquement des mails avec liens.

Je me heurte hélas, malgré ma macro correct, a 1 type de fichier pour qui la macro ne fonctionne pas, je m'explique:

Pour un type de fichier, j'ai créé un code vba me permettant de supprimer des lignes du tableau en fonction d'une date que j'ajoute par le biais de MsgBox, cela fonctionne, mais sur un fichier, en colonne H (colonne de dates) il y a des cases vides et de ce fait, fait planter ma macro.

Je souhaiterai donc, réussir à trier l'entièreté de ma colonne H en supprimant les dates correspondantes mais ne pas supprimer les lignes où il y a des cellules vides, ni être bloqué par ces dernières...

J'ai essayé divers méthode vu sur divers forum mais aucune ne fonctionne.

J'ai même essayé de mettre une date "bidon" sur les cellules vides (01/01/1900) et la ma macro fonctionne, mais je n'arrive pas à faire le chemin inverse en supprimant ces dates fictives pour retrouver les cases vides.

Sub Intox()

Set MaPlage = Sheets("feuil1").Range("H2:H1000")

For Each Cel In MaPlage

If Cel.Value = "01/01/1900" Then

Cel.Value = "" (j'ai essayé aussi : Sélection.ClearContents)

End If

Next

End Sub

Ca reste de la bidouille mais je ne trouve rien d'autres, donc si une âme charitable aurait une idée de remplacement ou qui pourrait m'aider à comprendre, je prends toute informations.

Vous en remerciant par avance,

Un novice nouveau

Salut

essayé de changer ca :

If Cel.Value = "01/01/1900" Then

Cel.Value = ""

avec ca :

If Cel.Text = "01/01/1900" Then

Cel.ClearContents

Bonjour,

Il te suffisait de tester si la cellule était vide pour ne pas déclencher la suppression de lignes... !

En affectant la valeur "" à la fin à ta cellule, celle-ci n'est plus vide mais contient une valeur de type String (chaîne nulle ou vide).

Si tu veux la vider il faut lui affecter la valeur Empty.

Cordialement.

Merci à vous deux pour vos réponses, explications.

Belkacem64, en modifiant en .Text ça donne exactement ce que je souhaitais, merci.

Par contre, par souci de rendre la macro plus simple en code, je me permets de vous solliciter à nouveau :

La macro entre l'ajout de la date 01/01/1900 et la suppression de cette date est la suivante :

Sub DATESUPR1 ()

Dim VarDate As Date

Dim finpaie

VarDate = Range("H2").Value

finpaie = InputBox ("Date de fin")

Do While Not (IsEmpty(ActiveCell))

If (DateDiff("d", finpaie, ActiveCell.Value) > 0) Then

ActiveCell.EntireRow.Delete

Else

ActiveCell.Offset(1,0).Select

End If

Loop

End Sub

Ce code fonctionne parfaitement, sauf bien sûr si des cellules vides s'y trouve, c'est pour cela que je passe par la "bidouille".

Est-il possible de modifier ce code pour que la macro ne bloque pas au cellules vides et passe à la suivante? J'ai déjà essayé en enlevant le "Do While" mais je n'arrive pas à étendre la sélection de la plage...

J'ai trouvé ceci :

Range("H5000").End(xlUp).Select

Range(ActiveCell, "H2").Select

Qui me permet de sélectionner ma plage de donnée correctement mais je n'arrive pas à l'ajouter dans l'une de mes Sub que ce soit DATESUPR1 ou INTOX...

Je vous remercie encore pour votre temps, et désolé si mon code paraît chaotique, je débute et il y a vraiment beaucoup de chose à voir et connaître sur le vba que seul l'expérience et l'entraide me fournira!

Salut

essayé ce code

Sub DATESUPR1()

Application.ScreenUpdating = False

Dim Start_Date As Date, End_Date As Date, c As Range

Start_Date = Range("H2").Value2

For Each c In Range("H3:H31")

End_Date = c.Value2

If (DateDiff("d", c, Start_Date) > 0) Then c.EntireRow.Delete

Next

Application.ScreenUpdating = True

End Sub

Merci une fois de plus, je testerai ça demain matin et vous ferez un retour.

Bonjour à vous,

Merci encore pour avoir résolu mon problème, je peux clôturer ce thème.

Encore merci pour votre rapidité et votre temps.

Rechercher des sujets similaires à "probleme vba vides"