Probleme VBA excel
Résolu
titi875
Messages postés
10
Statut
Membre
-
titi875 Messages postés 10 Statut Membre -
titi875 Messages postés 10 Statut Membre -
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
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:
- Probleme VBA excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
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...
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...
titi875
Messages postés
10
Statut
Membre
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...
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
@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....
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....