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
Bonjour,

Au fait je travaille sur un projet et jej suis debutante en VBA
J'ai besoin de savoir comment onpeut écrire un code permettant de dire:
Si la celle C4(date) et vide ou la date(autre date:F4) eest superier à la date en C4 on affecte 0.

Merci d'avance
A voir également:

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
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.
0
Utilisateur anonyme
26 mai 2010 à 13:17
Bonjour,

=SI(NBCAR(H4)=0;0;SI(F4>H4;0;"Ok"))
0
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
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
0
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
Bonjour,
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)
0

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
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
0
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
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 ?

0
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
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
0
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
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)
0
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
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
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)
0