Vba-exel macro if+date
Fermé
Bird007
Messages postés
11
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2010
-
26 mai 2010 à 11:42
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 26 mai 2010 à 18:23
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 26 mai 2010 à 18:23
A voir également:
- Vba-exel macro if+date
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Publipostage date en anglais ✓ - Forum Excel
9 réponses
koji56
Messages postés
30
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
5 juillet 2010
6
26 mai 2010 à 12:24
26 mai 2010 à 12:24
Comment la date est entrée dans la cellule? Sous forme de formule?
Si c'est le cas une simple fonction SI d'excel devrait suffire.
Si c'est le cas une simple fonction SI d'excel devrait suffire.
Bird007
Messages postés
11
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2010
1
26 mai 2010 à 14:33
26 mai 2010 à 14:33
Bnjour,
Merci pour prendre de votre temps pour me répondre
Non c'est pas ca
Je vias vous expliquer mon problème
Au debut j'ai fais uneboucle pour calculer les prevsions et alimenter mon tableau directement avec cette boucle. j'ai procéde comme suit:
Sub test_si()
Application.ScreenUpdating = False
'selection de la première cellule du code analytique nommée"DebListe" de la feille "CA(PS)"
Sheets("CA(PS)").Range("DebListe").Select
Do Until IsEmpty(ActiveCell)
'selection de la cellule code analytique dans la feuille "Calcul_prevision (PS)" et la nommer "ActiveCell"
Sheets("Calcul_prevision(PS)").Range("CodePrev") = ActiveCell
Sheets("Calcul_prevision(PS)").Select
'copier les prévisions calculées à partir de la feuille "Calcul_prevision(PS)"
Range("K32:BF32").Copy
Sheets("CA(PS)").Select
'coller les valeurs copiées dans les cellules convenues dans la feuille "CA(PS)"
ActiveCell.Offset(0, 28).PasteSpecial xlPasteValues
' retourner au code analytique suivant dans la feuille "Calcul_prevision(PS)"
ActiveCell.Offset(1, -28).Select
Loop
Application.ScreenUpdating = True
End Sub
après je me suis rendu compte qu'il faut d'abord tester si la date de resiliation et superieur ou inferieur au mois en cours. si c'est inferieur vaut pas la peine d'entrer dans la boucle, mais si c'est superieur la on doit entrer dans la boucle et dc ca mon problème actuel
merci encore une fois
Merci pour prendre de votre temps pour me répondre
Non c'est pas ca
Je vias vous expliquer mon problème
Au debut j'ai fais uneboucle pour calculer les prevsions et alimenter mon tableau directement avec cette boucle. j'ai procéde comme suit:
Sub test_si()
Application.ScreenUpdating = False
'selection de la première cellule du code analytique nommée"DebListe" de la feille "CA(PS)"
Sheets("CA(PS)").Range("DebListe").Select
Do Until IsEmpty(ActiveCell)
'selection de la cellule code analytique dans la feuille "Calcul_prevision (PS)" et la nommer "ActiveCell"
Sheets("Calcul_prevision(PS)").Range("CodePrev") = ActiveCell
Sheets("Calcul_prevision(PS)").Select
'copier les prévisions calculées à partir de la feuille "Calcul_prevision(PS)"
Range("K32:BF32").Copy
Sheets("CA(PS)").Select
'coller les valeurs copiées dans les cellules convenues dans la feuille "CA(PS)"
ActiveCell.Offset(0, 28).PasteSpecial xlPasteValues
' retourner au code analytique suivant dans la feuille "Calcul_prevision(PS)"
ActiveCell.Offset(1, -28).Select
Loop
Application.ScreenUpdating = True
End Sub
après je me suis rendu compte qu'il faut d'abord tester si la date de resiliation et superieur ou inferieur au mois en cours. si c'est inferieur vaut pas la peine d'entrer dans la boucle, mais si c'est superieur la on doit entrer dans la boucle et dc ca mon problème actuel
merci encore une fois
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 26/05/2010 à 15:00
Modifié par lermite222 le 26/05/2010 à 15:00
Bonjour,
Si tes deux cellules sont formatées en date tu peu simplement comparer
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
If DateSerial(Range("C4")) < DateSerial(Range("F4")) Then 'J'entre dans la boucle.. ou l'inverse ? End If
Si tes deux cellules sont formatées en date tu peu simplement comparer
If Range("C4") < Range("F4") Then
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bird007
Messages postés
11
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2010
1
26 mai 2010 à 15:13
26 mai 2010 à 15:13
Rebonjour,
merci pour la reponse
le problème c'est que mon mois en cours change toujours, et que je ne sais pas comment dire on affecte 0 depuis le mois ou on a trouvé la resiliation
prevision
Code analytique date de resiliation J2010 F10 M10
124545 01/02/2010
124563 on connait pas la date de res
124569 01/03/2010
......
......
.......
ma boucle (qui est ds ma dernière reponse) est prgrammée de telle facon depuis une autre feulle elle alimente automatiquement ma feuille. ms ma boucle ne prend pas en consideration la date de reslilaition
moi je veux ke kon mon curseur vient se placer sur le 'F10" et qui trouve que la date de resiliation est deja passé, au lieu k il m'affecte les prevision deja calcule ds l'autre feuille, il m'affecte des 0 dans les cellule qui suivent, alors k'il continue à m'affecter mes previsions pour les autres. et de la même façon kon on se place sur le "M10" il cesse d'affecter les previsions pr ce code analytique mais il continue à alimenter les autres et ainsi de suite
J'espère que j'étais clair :S
merci pour la reponse
le problème c'est que mon mois en cours change toujours, et que je ne sais pas comment dire on affecte 0 depuis le mois ou on a trouvé la resiliation
prevision
Code analytique date de resiliation J2010 F10 M10
124545 01/02/2010
124563 on connait pas la date de res
124569 01/03/2010
......
......
.......
ma boucle (qui est ds ma dernière reponse) est prgrammée de telle facon depuis une autre feulle elle alimente automatiquement ma feuille. ms ma boucle ne prend pas en consideration la date de reslilaition
moi je veux ke kon mon curseur vient se placer sur le 'F10" et qui trouve que la date de resiliation est deja passé, au lieu k il m'affecte les prevision deja calcule ds l'autre feuille, il m'affecte des 0 dans les cellule qui suivent, alors k'il continue à m'affecter mes previsions pour les autres. et de la même façon kon on se place sur le "M10" il cesse d'affecter les previsions pr ce code analytique mais il continue à alimenter les autres et ainsi de suite
J'espère que j'étais clair :S
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
26 mai 2010 à 15:58
26 mai 2010 à 15:58
J'espère que j'étais clair .. non !!
En lisant entre tes lignes..
Les contrats sont établis en fonction d'un nombre de mois ??
Donc faut compter le nombre de mois depuis une date de contra et la date actuelle... C'est à peut près ça ?
date de resiliation J2010 F10 M10
C'est comme ça que c'est renseigner dans tes cellules ?
En lisant entre tes lignes..
Les contrats sont établis en fonction d'un nombre de mois ??
Donc faut compter le nombre de mois depuis une date de contra et la date actuelle... C'est à peut près ça ?
date de resiliation J2010 F10 M10
C'est comme ça que c'est renseigner dans tes cellules ?
Bird007
Messages postés
11
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
19 juillet 2010
1
26 mai 2010 à 17:27
26 mai 2010 à 17:27
Rebonjour,
Non dans mes cellule c'est reseigné janv fevrier mars c été juste pr illustrer
au fai oui un certain nombre de mois.
Dis moi stp si on a
IF C4<F4 then (les cellules par ex (G4:P4)) recevront 0 sinon ils recevront les élement dèja calculé
Merci et dsl pour la perturbation
Non dans mes cellule c'est reseigné janv fevrier mars c été juste pr illustrer
au fai oui un certain nombre de mois.
Dis moi stp si on a
IF C4<F4 then (les cellules par ex (G4:P4)) recevront 0 sinon ils recevront les élement dèja calculé
Merci et dsl pour la perturbation
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 26/05/2010 à 18:04
Modifié par lermite222 le 26/05/2010 à 18:04
Il me semble que dans le décompte de tes mois il y a un os.. Si c'est Févier 2010 et Septembre 2009, si tu ne calcul que les mois ça ne va pas marcher, faut aussi tenir compte de l'année.
A ta question, les cellules ne prennent une valeur que quand ont leur en attribue une.
Edit:
Quand je reprend ton exemple.. J2010 F10 M10
Ce sont les colonnes J,F et M que tu référencie ?
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
A ta question, les cellules ne prennent une valeur que quand ont leur en attribue une.
Edit:
Quand je reprend ton exemple.. J2010 F10 M10
Ce sont les colonnes J,F et M que tu référencie ?
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 26/05/2010 à 18:24
Modifié par lermite222 le 26/05/2010 à 18:24
Et en relisant ta macro, plusieurs erreurs,
1°) ne pas attribuer de nom avec des mot clé d'excel comme ActiveCell.
2°) Faut.. Sheets("Calcul_prevision(PS)").Range("CodePrev") = ActiveCell
Ont n'attribue pas une cellule à activeCell
Dans ton cas je vois pas ce que tu veux faire.
3°) Pourquoi un Do until alors que tu copie à des adresses bien définies et qui changent pas ?
Explique ce que tu veux faire juste en parlant des cellules et pas de mots analytique ou autre, ça ne m'intéresse pas de connaître ces noms.
4°) A titre indicatif, pour attribuer un nom à un range faut employer Set
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
1°) ne pas attribuer de nom avec des mot clé d'excel comme ActiveCell.
2°) Faut.. Sheets("Calcul_prevision(PS)").Range("CodePrev") = ActiveCell
Ont n'attribue pas une cellule à activeCell
Dans ton cas je vois pas ce que tu veux faire.
3°) Pourquoi un Do until alors que tu copie à des adresses bien définies et qui changent pas ?
Explique ce que tu veux faire juste en parlant des cellules et pas de mots analytique ou autre, ça ne m'intéresse pas de connaître ces noms.
4°) A titre indicatif, pour attribuer un nom à un range faut employer Set
Dim LeNom as Range Set LeNom = Sheets("Calcul_prevision(PS)").Range(CodePrev)
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)