Formule si et macro calcul de jours
Fermé
tofing
Messages postés
20
Date d'inscription
mardi 9 février 2010
Statut
Membre
Dernière intervention
22 juin 2011
-
21 juin 2011 à 14:20
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 22 juin 2011 à 13:36
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 22 juin 2011 à 13:36
A voir également:
- Formule si et macro calcul de jours
- Formule si et - Guide
- Compte facebook suspendu 180 jours - Guide
- Calcul moyenne excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
7 réponses
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
21 juin 2011 à 14:32
21 juin 2011 à 14:32
Pour le debut:
je ne vois pas ce que fais precisement la fonction jours360
If cells(4,5)<>"" or cells(4,6)<>"" then
je ne vois pas ce que fais precisement la fonction jours360
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 juin 2011 à 14:41
21 juin 2011 à 14:41
bonjour,
Sub Macro1()
Range("A1").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(R[-9]C[1]),ISBLANK(R[-9]C[2])),"""",DAYS360(R[-9]C[1],R[-9]C[2])+1)"
Range("A1").Select
End Sub
Sub Macro1()
Range("A1").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(R[-9]C[1]),ISBLANK(R[-9]C[2])),"""",DAYS360(R[-9]C[1],R[-9]C[2])+1)"
Range("A1").Select
End Sub
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 juin 2011 à 14:42
21 juin 2011 à 14:42
une petite erreur, pour que ce soit valable en A1 :
Sub Macro2()
'
Range("A1").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(R[3]C[4]),ISBLANK(R[3]C[5])),"""",DAYS360(R[3]C[4],R[3]C[5])+1)"
Range("A1").Select
End Sub
Sub Macro2()
'
Range("A1").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(R[3]C[4]),ISBLANK(R[3]C[5])),"""",DAYS360(R[3]C[4],R[3]C[5])+1)"
Range("A1").Select
End Sub
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 juin 2011 à 14:43
21 juin 2011 à 14:43
entre parenthèse, tu pouvais enregistrer une macro, écrire ta formule et tu aurais eu le code vba et macro de faite
tofing
Messages postés
20
Date d'inscription
mardi 9 février 2010
Statut
Membre
Dernière intervention
22 juin 2011
21 juin 2011 à 14:46
21 juin 2011 à 14:46
Merci à vous deux
Je teste de suite ta formule mélanie et tiens compte de tes remarques
Je teste de suite ta formule mélanie et tiens compte de tes remarques
tofing
Messages postés
20
Date d'inscription
mardi 9 février 2010
Statut
Membre
Dernière intervention
22 juin 2011
21 juin 2011 à 15:48
21 juin 2011 à 15:48
Merci ç marche
J'aimerais en plus que la formule s'applique à l'ensemble de la colonne G et s'active dès l'ouverture d''excel
Pour l'ouverture auto, j'ai
Sub Auto_open()
worksheetS("sheet1").Activate
et pour la colonne entière j'ai
Range("G:G").Select
Mais ça ne fonctionne pas très bien
J'aimerais en plus que la formule s'applique à l'ensemble de la colonne G et s'active dès l'ouverture d''excel
Pour l'ouverture auto, j'ai
Sub Auto_open()
worksheetS("sheet1").Activate
et pour la colonne entière j'ai
Range("G:G").Select
Mais ça ne fonctionne pas très bien
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tofing
Messages postés
20
Date d'inscription
mardi 9 février 2010
Statut
Membre
Dernière intervention
22 juin 2011
21 juin 2011 à 15:54
21 juin 2011 à 15:54
C'est bon j'ai enlevé
worksheetS("sheet1").Activate puisque je pense qu'en l'inscrivant dans le module de la feuille 1, il n'est pas nécessaire de rajouter cela
Merci pour votre aide
Cordialement
Tofing
worksheetS("sheet1").Activate puisque je pense qu'en l'inscrivant dans le module de la feuille 1, il n'est pas nécessaire de rajouter cela
Merci pour votre aide
Cordialement
Tofing
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 juin 2011 à 15:56
21 juin 2011 à 15:56
bonjour,
Sub Auto_open()
worksheetS("sheet1").Activate
range("G1").select
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(RC[-2]),ISBLANK(RC[-1])),"""",DAYS360(RC[-2],RC[-1])+1)"
Range("G2").Select
Range("G1").Select
Selection.AutoFill Destination:=Range("G1:G65000"), Type:=xlFillDefault
Range("G1:G2").Select
Sub Auto_open()
worksheetS("sheet1").Activate
range("G1").select
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(RC[-2]),ISBLANK(RC[-1])),"""",DAYS360(RC[-2],RC[-1])+1)"
Range("G2").Select
Range("G1").Select
Selection.AutoFill Destination:=Range("G1:G65000"), Type:=xlFillDefault
Range("G1:G2").Select
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 juin 2011 à 15:56
21 juin 2011 à 15:56
il manque le end sub a la fin et tu peux supprimer la ligne :
Range("G1:G2").Select
Range("G1:G2").Select
tofing
Messages postés
20
Date d'inscription
mardi 9 février 2010
Statut
Membre
Dernière intervention
22 juin 2011
21 juin 2011 à 16:53
21 juin 2011 à 16:53
Alors voila le code que j'avais à la base
Option Explicit
Sub Auto_open()
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(RC[-2]),ISBLANK(RC[-1])),"""",DAYS360(RC[-2],RC[-1])+1)"
For Each cellule In colums(8).Cells
End Sub
Maintenant ça ne marche plus
Je n'arrive pas à appliquer ton code non plus mélanie
Je dois l'inscrire dans un module ou dans le code de la feuille ?
Option Explicit
Sub Auto_open()
ActiveCell.FormulaR1C1 = _
"=IF(OR(ISBLANK(RC[-2]),ISBLANK(RC[-1])),"""",DAYS360(RC[-2],RC[-1])+1)"
For Each cellule In colums(8).Cells
End Sub
Maintenant ça ne marche plus
Je n'arrive pas à appliquer ton code non plus mélanie
Je dois l'inscrire dans un module ou dans le code de la feuille ?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
21 juin 2011 à 18:38
21 juin 2011 à 18:38
Bonjour,
Au passage c'est une mauvaise idée que de remplir toute la colonne. Le fichier va prendre de l'embonpoint pour rien...
Et puis dans le auto_open ce n'est pas une bonne idée non plus. Une fois que c'est fait c'est bon (tant que personne n'efface les cellules)
Ca serait mieux de la mettre dans l'évènement Change lorsque E et F sont saisis, ou compléter à 100 ou 1000 lignes libres à l'ouverture.
eric
Au passage c'est une mauvaise idée que de remplir toute la colonne. Le fichier va prendre de l'embonpoint pour rien...
Et puis dans le auto_open ce n'est pas une bonne idée non plus. Une fois que c'est fait c'est bon (tant que personne n'efface les cellules)
Ca serait mieux de la mettre dans l'évènement Change lorsque E et F sont saisis, ou compléter à 100 ou 1000 lignes libres à l'ouverture.
eric
tofing
Messages postés
20
Date d'inscription
mardi 9 février 2010
Statut
Membre
Dernière intervention
22 juin 2011
22 juin 2011 à 12:33
22 juin 2011 à 12:33
Merci eric de tes précisions mais pourrais-tu les expliciter davantage?
Qu'entends-tu par "Ca serait mieux de la mettre dans l'évènement Change lorsque E et F sont saisis"
Qu'entends-tu par "Ca serait mieux de la mettre dans l'évènement Change lorsque E et F sont saisis"
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
22 juin 2011 à 13:36
22 juin 2011 à 13:36
Bonjour,
Tu veux absolument que la formule soit présente ?
Tant qu'à y mettre du vba autant mettre uniquement le résultat (en G ?) si les 2 dates sont correctes.
Et la façon de traiter ton problème dépend du fonctionnement de ta feuille :
Est-ce une feuille déjà crée et il faut traiter toutes les lignes ?
Est-ce une importation auquel cas les données ne sont pas forcément au format date ?
Est-une saisie ligne à ligne ?
Est-ce le résultat d'une formule ?
Est-que les données peuvent être modifiées au cours du temps ?
Une réponse à toutes ces questions (6) et un fichier exemple déposé sur cijoint.fr (coller ici le lien fourni) permettra une réponse la plus correcte à ton pb.
Et comme tu as l'air débutant sur excel j'espère que tu sais que jours360() considère que l'année fait 360 jours....
C'est à dire qu'entre le 15/04/11 et le 21/09/11 jours(360) donne 157 au lieu 159
Si tu veux la différence réelle en jours il faut simplement =F2-E2 et remettre le format de cellule à 'Standard'
eric
Tu veux absolument que la formule soit présente ?
Tant qu'à y mettre du vba autant mettre uniquement le résultat (en G ?) si les 2 dates sont correctes.
Et la façon de traiter ton problème dépend du fonctionnement de ta feuille :
Est-ce une feuille déjà crée et il faut traiter toutes les lignes ?
Est-ce une importation auquel cas les données ne sont pas forcément au format date ?
Est-une saisie ligne à ligne ?
Est-ce le résultat d'une formule ?
Est-que les données peuvent être modifiées au cours du temps ?
Une réponse à toutes ces questions (6) et un fichier exemple déposé sur cijoint.fr (coller ici le lien fourni) permettra une réponse la plus correcte à ton pb.
Et comme tu as l'air débutant sur excel j'espère que tu sais que jours360() considère que l'année fait 360 jours....
C'est à dire qu'entre le 15/04/11 et le 21/09/11 jours(360) donne 157 au lieu 159
Si tu veux la différence réelle en jours il faut simplement =F2-E2 et remettre le format de cellule à 'Standard'
eric
21 juin 2011 à 14:42
En fait j'ai écrit cela mais je ne sais pas si c'est correct, du moins cela ne fonctionne pas
Range("G:G").FormulaLocal = "=SI(OU(ESTVIDE(E4);ESTVIDE(F4));"";JOURS360(E4;F4)+1)"
La formule jours360 permet de calculer le nombre de jours calendaires entre deux dates
ps : je j'ai pas précisé mais je suis novice sur vba
MERCI
Modifié par Christof422 le 21/06/2011 à 14:44
Essaye la formule de melanie1324. Si cela ne marche pas je me pencherai plus serieusement sur ton cas.