Si format de cellule: date, ect

Fermé
hedi - 23 janv. 2014 à 17:39
 hedi - 5 févr. 2014 à 17:34
Bonjour, j'utilise If isdate(Range...) = True, ca me dit True quand une cellule est vide en format standard, que faire ?

Merci !
A voir également:

23 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 23/01/2014 à 17:53
Bonjour,

Où est situé ton code ? Peux-tu mettre ta procédure ici (en utilisant les balises qui vont bien avec la petite flèche juste à droite de <> dans le petit bandeau du haut de la réponse)?

Peut-on savoir sur quelle feuille se trouvent tes dates ?

Bref, toutes les infos qui pourraient être susceptibles de nous aider à résoudre ton problème...

;0)

«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0
Je reformule ma question: est ce que isdate est bien ce qu'il faut utiliser ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 23/01/2014 à 18:07
Si tu veux savoir si le contenu de ta cellule est une date, oui c'est bien IsDate(laCellule) qu'il faut utiliser

«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0
Ok, merci polux !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re bonjour, j'ai un programme qui ne fait pas ce qu'il faut, et je ne trouve pas le probleme. Dans le tableau de base (catalogue) on a des achat et des vente, avec des dates de debut de droits et des dates de fin de droits, si on a un titre en achat et qu'on est dans l'intervalle de droits et que le titre n'est pas vendu (on est pas dans l'intervalle de dates (debut-fin pour les ventes)), et qu'on a bien un fomat date pour le titre, en achat et pour toutes les ventes, alors le titre s'affiche dans le nouveau tableau. Je ne peux pas envoyer le tableau de base, donc je voulais savoir si il y a un probleme dans le programme (de plus il est tres lent):

Private Sub Workbook_Open()

Application.DisplayAlerts = False
Application.ScreenUpdating = False

Range("A2:P5000").Clear

Dim titre As String
Dim wbk1 As Workbook
Dim wbk2 As Workbook 'Pr utilisation et mise a jour: activer macros, enregistrer base et relancer
titre = "X:\CATALOGUE ZYLO COMPLET (a jour).xlsx"
Set wbk1 = ThisWorkbook
Set wbk2 = Workbooks.Open(titre)
Dim derniere_ligneB As Integer
Dim derniere_ligneR As Integer
derniere_ligneB = wbk2.Sheets(1).Range("C" & Rows.Count).End(xlUp).Row
Dim k As Integer
Dim g As Integer

For i = 3 To derniere_ligneB

derniere_ligneR = wbk1.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row


k = 0

For j = 3 To derniere_ligneB

If IsDate(wbk2.Sheets(1).Range("Z" & i).Value) = True And IsDate(wbk2.Sheets(1).Range("Y" & i).Value) = True Then
If Date > wbk2.Sheets(1).Range("Z" & i).Value Or Date < wbk2.Sheets(1).Range("Y" & i).Value Then
k = k + 1
End If
End If


If IsDate(wbk2.Sheets(1).Range("Z" & i).Value) = True And IsDate(wbk2.Sheets(1).Range("Y" & i).Value) = True Then
If wbk2.Sheets(1).Range("Y" & i).Value < Date < wbk2.Sheets(1).Range("Z" & i).Value And wbk2.Sheets(1).Range("C" & i).Value = wbk2.Sheets(1).Range("C" & j).Value And wbk2.Sheets(1).Range("B" & j).Value = "VENTE" Then
If IsDate(wbk2.Sheets(1).Range("Z" & j).Value) = True And IsDate(wbk2.Sheets(1).Range("Y" & j).Value) = True Then
If wbk2.Sheets(1).Range("Y" & j).Value < Date < wbk2.Sheets(1).Range("Z" & j).Value Then
k = k + 1
End If
End If
End If
End If

If wbk2.Sheets(1).Range("C" & i).Value = wbk2.Sheets(1).Range("C" & j).Value And (IsDate(wbk2.Sheets(1).Range("Z" & j).Value) = False Or IsDate(wbk2.Sheets(1).Range("Y" & j).Value) = False) Then
k = k + 1
End If

Next

If k = 0 And IsDate(wbk2.Sheets(1).Range("Z" & i).Value) = True And IsDate(wbk2.Sheets(1).Range("Y" & i).Value) = True And wbk2.Sheets(1).Range("B" & i).Value = "ACHAT" And wbk2.Sheets(1).Range("P" & i).Value <> "NON" Then
wbk1.Sheets(1).Range("A" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("C" & i).Value
wbk1.Sheets(1).Range("B" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("D" & i).Value
wbk1.Sheets(1).Range("C" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("P" & i).Value
wbk1.Sheets(1).Range("D" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("Z" & i).Value
wbk1.Sheets(1).Range("E" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("G" & i).Value
wbk1.Sheets(1).Range("F" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("H" & i).Value
wbk1.Sheets(1).Range("G" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("I" & i).Value
wbk1.Sheets(1).Range("H" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("J" & i).Value
wbk1.Sheets(1).Range("I" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("K" & i).Value
wbk1.Sheets(1).Range("J" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BN" & i).Value
wbk1.Sheets(1).Range("K" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BO" & i).Value
wbk1.Sheets(1).Range("L" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BK" & i).Value
wbk1.Sheets(1).Range("M" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BJ" & i).Value
wbk1.Sheets(1).Range("N" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BI" & i).Value
wbk1.Sheets(1).Range("O" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BF" & i).Value
wbk1.Sheets(1).Range("P" & derniere_ligneR + 1).Value = wbk2.Sheets(1).Range("BU" & i).Value
End If

Next

wbk2.Close

End Sub



Merci de votre aide !
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
24 janv. 2014 à 12:53
Bonjour,

As-tu passé le code pas à pas pour vérifier si toutes les conditions sont correctes ?

A première vue, il y a des conditions IF plutôt étranges tel que :

If wbk2.Sheets(1).Range("Y" & j).Value < Date < wbk2.Sheets(1).Range("Z" & j).Value Then
k = k + 1
End If


Sans vérifier, il me semble que ça soit vrai quelques soient les valeurs testées !!!

C'est un peu normal que ça rame avec des boucles For Next imbriquées ...


0
Merci Polux, au fait on peut avoir la date du jour qui ne soit pas dans l'intervalle de vente donc ca ne serait pas vrai toujours je pense. Je vais reverifier le code. Merci ^^
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
24 janv. 2014 à 15:13
Admettons que l'interval de vente soit : 01/01/2014 à 31/01/2014, la date d'aujourd'hui 24/01/2014 dans ce cas est VRAI ... puisque selon ta condition :
Si 01/01/2014 < 24/01/2014 < 31/01/2014 Alors ...

Si l'interval est du 01/01/2014 au 15/01/2014, on a :
01/01/2014 < 24/01/2014 < 15/01/2014 ... et le retour est VRAI puisque 01/01/2014 < 24/01/2014

Il faut tester les 2 conditions :

Si 01/01/2014 < 24/01/2014 ET 24/01/2014 < 15/01/2014 Alors ...
0
MERCI ! I LOVE YOU x). Cela va surement resoudre le probleme
0
Fausse joie Polux,

J'ai modifié les 2 lignes ou il y avait ce problème en: rangeY<Date and Date<rangeZ

Mais hélas il y a au moins un titre pour lequel ca ne marche pas, on est dans l'intervalle pour l'achat, il y a plusieurs vente qui sont terminées. On a un OUI en rangeP (pour l'achat). Et le titre ne s'affiche pas :(.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
24 janv. 2014 à 16:32
Je n'ai jété qu'un coup d'oeil rapide et la condition citée plus haut m'a interpelé. Sans possibilité de faire du pas à pas pour vérifier toutes les conditions, il est difficile de voir où est le loup ... sans parler des For ... Next et des IF imbriqués ...

Les conditions de tests énumérées ici sont loin d'être claires ...
0
Ok je vais regarder encore, merci !
0
Bonjour,

Dit Polux, si je t'envoie les classeurs tu pourrais m'aider ?

Merci, Hedi !
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 janv. 2014 à 13:08
Bonjour,

Envoie les fichiers en passant par cjoint.com et vient mettre les liens ici. Je regarderai si je peux faire quelque chose.

PS: Je ne prends pas de fichiers compressés.
0
Ok merci Polux. Pour l'instant je ne vois pas par exemple le titre Dekker, qui devrait s'afficher dans dispo

http://cjoint.com/?3AzvD5wpMOm
http://cjoint.com/?3AzvEV8uKcC
0
Bonjour Polux, je viens aux nouvelles car il me reste que quelques jours pour finir ce programme ^^.

Merci !

Hedi
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 janv. 2014 à 14:37
Bonjour,

Je n'ai pas vraiment eu le temps de m'occuper de ça. Mais au premier test en pas à pas je me suis rendu compte que la boucle s'effectuait 1057 x 1057 fois !!!

Impossible de tout tester .... d'autant que je n'ai pas de contrainte clairement définies pour les conditions des différents tests.

Il faudrait un fichier base d'une dizaine d'exemples avec dedans les différents cas à tester identifier, ainsi que le résultat attendu après traitement pour pouvoir faire les vérifications pas à pas.
0
Tres bien, je vais vous faire ca ! Merci Polux.
0
Re, j'ai fait ce que tu voulais et ca marche :o :O, d'où peut venir le probleme alors :s je vais chercher un peu de nouveau.

Merci Polux
0
J'ai rajouté le titre qui pose probleme en copier coller, il ne s'affiche pas, donc voici es liens Polux, le probleme n'est donc pas au niveau du programme apparement.

Merci !

http://cjoint.com/?3ABpONdedlT
http://cjoint.com/?3ABpPd3ppku
0
J'ai trouvé une petite erreur, j'ai ajouté la condition que en A & i on a un achat, ce avant chaque bloc de If imbriqués, mais ca n'ajoute toujours pas Dekker. :(
0
le probleme se poserait donc quand on a plusieurs ventes
0
Bonjour Polux, toujours pas eu le temps ?

Merci.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
28 janv. 2014 à 15:02
Bonjour,

Il y a des conditions que je ne m'explique pas comme celles ci:

If IsDate(wbk2.Sheets(1).Range("D" & i).Value) = True And IsDate(wbk2.Sheets(1).Range("C" & i).Value) = True Then
If wbk2.Sheets(1).Range("C" & i).Value < Date And Date < wbk2.Sheets(1).Range("D" & i).Value And wbk2.Sheets(1).Range("B" & i).Value = wbk2.Sheets(1).Range("B" & j).Value And wbk2.Sheets(1).Range("A" & j).Value = "VENTE" Then
If IsDate(wbk2.Sheets(1).Range("D" & j).Value) = True And IsDate(wbk2.Sheets(1).Range("C" & j).Value) = True Then
If wbk2.Sheets(1).Range("C" & j).Value < Date And Date < wbk2.Sheets(1).Range("D" & j).Value Then
k = k + 1
End If
End If
End If
End If


Pourquoi par exemple la date de fin de la ligne 25 doit être égale à la date de fin de la ligne 2 ???

Comme ici
wbk2.Sheets(1).Range("B" & i).Value = wbk2.Sheets(1).Range("B" & j).Value And wbk2.Sheets(1).Range("A" & j).Value = "VENTE" Then


Dans la boucle i = 25 et j = 2 !!!

Sans les conditions et contraintes claires pour savoir ce qu'il faut extraire, je ne peux rien faire de plus...

0
Merci Polux, je te donne les conditions claires, tel que les titres en rouge dans les derniers docs envoyés s'affichent.

Il faut qu'un titre en achat s'affiche si: on en entre la date de début et de fin, et si le titre apparait en vente on est pas entre la date de début et de fin (pour la vente), ET il faut que les formats soient des dates (pour l'achat, et pour les ventes si il y a), mais cette dernière condition, les formats qui doivent être des dates, on peut s'en passer.

Est ce assez clair ?

Hedi
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
28 janv. 2014 à 15:16
Ok

Je regarde ce soir

Et pour les conditions ci dessus ? Pourquoi 2 boucles For imbriquées ?
0
Mercii, les conditions au dessus:
La premiere dit que si le titre en i est n'est pas a echeance (entre date de debut et de fin) et qu'il est trouvé en vente et qu'il est dispo (pour les ventes on est pas entre date de debut et de fin) (et si les formats sont bon) alors k n'est plus nul. Les boucles imbriquées servent a prendre un titre en achat et tester si il reapparait dans la base (en vente) pour voir si il est dispo. J'ai utilisé k s'initialise a 0 pour chaque nouveau i puis si les conditions ne sont pas satisfaites quand on parcourt les ventes alors k devient non nul et le titre ne s'affiche pas.

Merci beaucoup pour ton aide Polux.

Hedi
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 28/01/2014 à 16:19
Dans les conditions énoncées ici lien(#25) il n'est pas question de ça:
"Les boucles imbriquées servent a prendre un titre en achat et tester si il reapparait dans la base (en vente) pour voir si il est dispo" !!!

Je n'ai pas l'impression que tu ais vraiment assimilées les conditions et les contraintes pour extraire ce que tu cherches ...
0
On prend le titre en i=1 puis on test si il reapparait dans la base en parcourant les j:
for i =1 to..
for j = 1 to..
if range A & i = range A & j and range B & j = VENTE then ...
next
next

C'est pour cela qu'il faut des for imbriqués, non ? Sinon je ne voit pas comment tester si un titre acheté a été vendu.

Merci Polux :s
0
Bonjour Polux,

toujours pas eu le temps de regarder ?

J'ai jusqu'à vendredi :s.

Merci a toi.
0
Bonjour, il y a t il un moyen pour accélérer le programme ? Pour l'instant il met 5min.

Mercii
0