Probleme VBA excel

Résolu
titi875 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
titi875 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 693
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   295
 
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   Statut Contributeur Dernière intervention   1 693
 
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   Statut Membre Dernière intervention   295
 
@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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 693
 
Avec une boucle, ça ne sera pas lourd...
0
titi875 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 693
 
Les cellules sans dates sont-elle bien vides ?
0
titi875 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Et il me met que Range("B"&13)=00:00:00 donc pour lui c'est pas vide
0