Probleme VBA excel

Résolu/Fermé
titi875 Messages postés 10 Date d'inscription mercredi 21 avril 2010 Statut Membre Dernière intervention 3 mai 2010 - 21 avril 2010 à 11:53
titi875 Messages postés 10 Date d'inscription mercredi 21 avril 2010 Statut Membre Dernière intervention 3 mai 2010 - 21 avril 2010 à 14:14
Bonjour,

Je viens vers vous car je suis en train de faire un code en VBA et j'ai un petit soucis. Je vais essayer d'être claire mais ca ne va pas etre facile :
Dans un premier classeur, j'ai des cellules où sont récupérées des dates d'un autre onglet par l'intermédiaire d'une formule.
Dans mon second classeur je veux récupérer cette date (en format dd/mm/yyyy) et là est mon souci :
- si il y a une valeur dans le premier classeur, je n'ai pas de soucis
- s'il n'y a pas de valeur il m'écrit 12/30/1899 dans ma cellule de destination
Moi je voudrais que s'il n'y a pas de date d'indiquer dans le premier classeur il n'écrive rien dans le deuxième
Voila un extrait de mon code :

If WS.Name = "toto" Then `Premier classeur
Sheets("toto").Activate

DateFPBE = Format(Range("B" & 13), "mm/dd/yyyy")
DateFPind = Format(Range("B" & 21), "mm/dd/yyyy")

With master.Worksheets(Nom) `Classeur de destination
.Cells(l, 5) = DateFPBE
.Cells(l, 6) = DateFPind

Merci d'avance pour votre aide


A voir également:

3 réponses

Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
21 avril 2010 à 11:56
Bonjour,

Pourquoi ne teste tu pas la date récupérée:

Si la cellule est vide alors :

.Cells(l,5)=""

Désolé, je ne me souviens plus trop de la syntaxe VBA...
0
titi875 Messages postés 10 Date d'inscription mercredi 21 avril 2010 Statut Membre Dernière intervention 3 mai 2010
21 avril 2010 à 12:04
Bah parce que en fait je n'ai pas que deux dates j'en ai une vingtaine ou je ne peux pas faire de boucle alors ca va etre un peu lourd!! a moins qu'il y ai des moyens simples...
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 avril 2010 à 13:05
Alors fait un petit test avant le traitement avec la fonction IsEmpty

Sub test()
Dim date1 As Date
For i = 5 To 8   ' une serie de date et cellules vides en A5:A8
    If Not IsEmpty(Cells(i, 1)) Then

        date1 = Format(Cells(i, 1), "dd/mm/yyyy")
        Cells(i, 3).Value = date1 ' on réécrit  en c5 c8
    Else
    Cells(i, 3).Value = ""
    End If
Next


End Sub
0
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
21 avril 2010 à 13:06
C'est à peu de chose près ce que je lui avais proposé sauf que moi, je me souvenais plus du code... lol!
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 avril 2010 à 13:20
@Neliel
Je l'avais compris comme ça!

il y a d'autres solutions mais le plus simple reste de contrôler
la cellule avant d'en faire une affectation à une variable.
cela evite les boucles et les tests en série.

Je donne un exemple pas la solution toute faite.
pour
DateFPBE = Format(Range("B" & 13), "mm/dd/yyyy")
DateFPind = Format(Range("B" & 21), "mm/dd/yyyy")
je ferai :

if not isempty(Range("B" & 13)) then....
0
titi875 Messages postés 10 Date d'inscription mercredi 21 avril 2010 Statut Membre Dernière intervention 3 mai 2010
21 avril 2010 à 13:39
Ok Merci a tous!!!
Je vais faire comme cela pour l'instant mais si quelqu'un voit une autre solution plus simple je suis preneuse (parce que vu le nombre de date le code va etre un peu lourd...
0
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
21 avril 2010 à 13:41
Avec une boucle, ça ne sera pas lourd...
0
titi875 Messages postés 10 Date d'inscription mercredi 21 avril 2010 Statut Membre Dernière intervention 3 mai 2010
21 avril 2010 à 13:47
Alors finalement je viens de tester et ca ne fonctionne pas!
Voila ce que j'ai ecrit:
If Not IsEmpty(Range("B" & 13)) Then
.Cells(l, 5) = DateFPBE
End If
et j'ai toujours en résultat 12/30/1899 a la place de la bonne date...
0
Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 688
21 avril 2010 à 13:49
Les cellules sans dates sont-elle bien vides ?
0
titi875 Messages postés 10 Date d'inscription mercredi 21 avril 2010 Statut Membre Dernière intervention 3 mai 2010
21 avril 2010 à 13:49
Et il me met que Range("B"&13)=00:00:00 donc pour lui c'est pas vide
0