A voir également:
- Si format de cellule: date, ect
- Format epub - Guide
- Excel cellule couleur si condition texte - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format apfs - Guide
- Aller à la ligne dans une cellule excel - Guide
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
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
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
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
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
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
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):
Merci de votre aide !
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 !
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
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 :
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 ...
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 ...
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 ^^
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
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 ...
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 ...
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 :(.
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 :(.
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
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 ...
Les conditions de tests énumérées ici sont loin d'être claires ...
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
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.
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.
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
http://cjoint.com/?3AzvD5wpMOm
http://cjoint.com/?3AzvEV8uKcC
Bonjour Polux, je viens aux nouvelles car il me reste que quelques jours pour finir ce programme ^^.
Merci !
Hedi
Merci !
Hedi
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
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.
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.
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
Merci Polux
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
Merci !
http://cjoint.com/?3ABpONdedlT
http://cjoint.com/?3ABpPd3ppku
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
28 janv. 2014 à 15:02
Bonjour,
Il y a des conditions que je ne m'explique pas comme celles ci:
Pourquoi par exemple la date de fin de la ligne 25 doit être égale à la date de fin de la ligne 2 ???
Comme ici
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...
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...
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
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
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
28 janv. 2014 à 15:16
Ok
Je regarde ce soir
Et pour les conditions ci dessus ? Pourquoi 2 boucles For imbriquées ?
Je regarde ce soir
Et pour les conditions ci dessus ? Pourquoi 2 boucles For imbriquées ?
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
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
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
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 ...
"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 ...
On prend le titre en i=1 puis on test si il reapparait dans la base en parcourant les j:
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
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