Problème sur une fonction !

Le
Philippe B
Bonjour à tous !
A partir d'un nombre de jours, je voudrais le convertir de la façon suivante
:
xaxmx soit pour 563 jours 1a6m23

Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function

Ca doit certainement se voir, je suis un éternel débutant et je voulais vous
demander si vous connaissiez un site qui initie aux fonctions et procédure
et surtout la liste des fonctionalités.

Un grand merci par avance de votre aide

Bon dimanche

Amicalement

Philippe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4960711
Si tu prends la fonction que je t'ai donné et que tu remplaces
365.25 par 360 jours dans une année (ce que toi tu utilises)

Pour la valeur 1a6m23 la fonction trouve effectivement 563

DAns une cellule tu inscris : =Nbjours(B1) en supposant
que 1a6m23 soit en B1

Qu'est-ce que tu veux de plus ?

'--------------------------------------------
Function Nbjours(rg As Range)
Dim S As String, Pa As Integer, Pm As Integer
Dim R As Double
S = rg.Value
'Année
Pa = InStr(1, S, "a", vbTextCompare)
If Pa <> 0 Then R = Left(S, Pa - 1) * 360
'Mois
Pm = InStr(1, S, "m", vbTextCompare)
If Pm <> 0 Then R = R + (Mid(S, Pa + 1, Pm - Pa - 1) * 360) / 12
'Jour
If Pm > 0 Then
If Len(S) - Pm > 0 Then R = R + Right(S, Len(S) - Pm)
End If
Nbjours = Application.Round(R, 0)
End Function
'--------------------------------------------


"Philippe B" es%
Bonjour à tous !
A partir d'un nombre de jours, je voudrais le convertir de la façon suivante
:
xaxmx soit pour 563 jours 1a6m23

Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function

Ca doit certainement se voir, je suis un éternel débutant et je voulais vous
demander si vous connaissiez un site qui initie aux fonctions et procédure
et surtout la liste des fonctionalités.

Un grand merci par avance de votre aide

Bon dimanche

Amicalement

Philippe
Philippe B
Le #4977911
Bonjour,
Avant toute chose un grand merci à MichDenis pour toute son aide.
Désolé de ne pas avoir eu le temps de te dire que tout marchait pour le
mieux.

Mon soucis était que quand j'appelai la fonction Nbjours je renseignai
directement ce que j'avais à transformer en jour du genre :
Nbjours(1a6m23) et là il ne comprenai pas.

Maintenenant mon nouveau souci est à partir d'un nombre de jours je veux le
transformer selon le format xaxmx. C'est pour cela que j'ai essayé de mettre
au point tout seul (ne me dites pas que ça se voit !!) une fonction qui
permet de le faire.

Je vous présente mon oeuvre :
Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function


Ne vous moquez pas !!

Bonne soirée.

Philippe






"MichDenis"
Si tu prends la fonction que je t'ai donné et que tu remplaces
365.25 par 360 jours dans une année (ce que toi tu utilises)

Pour la valeur 1a6m23 la fonction trouve effectivement 563

DAns une cellule tu inscris : =Nbjours(B1) en supposant
que 1a6m23 soit en B1

Qu'est-ce que tu veux de plus ?

'--------------------------------------------
Function Nbjours(rg As Range)
Dim S As String, Pa As Integer, Pm As Integer
Dim R As Double
S = rg.Value
'Année
Pa = InStr(1, S, "a", vbTextCompare)
If Pa <> 0 Then R = Left(S, Pa - 1) * 360
'Mois
Pm = InStr(1, S, "m", vbTextCompare)
If Pm <> 0 Then R = R + (Mid(S, Pa + 1, Pm - Pa - 1) * 360) / 12
'Jour
If Pm > 0 Then
If Len(S) - Pm > 0 Then R = R + Right(S, Len(S) - Pm)
End If
Nbjours = Application.Round(R, 0)
End Function
'--------------------------------------------


"Philippe B" es%
Bonjour à tous !
A partir d'un nombre de jours, je voudrais le convertir de la façon
suivante
:
xaxmx soit pour 563 jours 1a6m23

Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function

Ca doit certainement se voir, je suis un éternel débutant et je voulais
vous
demander si vous connaissiez un site qui initie aux fonctions et procédure
et surtout la liste des fonctionalités.

Un grand merci par avance de votre aide

Bon dimanche

Amicalement

Philippe






MichDenis
Le #4977151
Dans ta cellule tu inscris : = ModFormat(A1)
Dans A1, tu as le nombre d'heures.inscrit

Fonction à copier dans u module standard.
'---------------------------------
Function ModFormat(Rg As Range)

Dim Chaine As String
Dim h As Double, j As Double
Dim T As Long, S As Long

'jours
j = Int(Rg / 24)
If j > 0 Then Chaine = j & "j"

'Heures
h = Int(Rg - (j * 24))
If h > 0 Then Chaine = Chaine & h & "h"

'Minutes
T = (Rg - (j * 24) - h) * 3600
M = Int(T / 60)
If M > 0 Then Chaine = Chaine & M & "m"

'Secondes
S = T Mod 60
If S > 0 Then Chaine = Chaine & S & "s"
ModFormat = Chaine

End Function
'---------------------------------





"Philippe B"
Bonjour,
Avant toute chose un grand merci à MichDenis pour toute son aide.
Désolé de ne pas avoir eu le temps de te dire que tout marchait pour le
mieux.

Mon soucis était que quand j'appelai la fonction Nbjours je renseignai
directement ce que j'avais à transformer en jour du genre :
Nbjours(1a6m23) et là il ne comprenai pas.

Maintenenant mon nouveau souci est à partir d'un nombre de jours je veux le
transformer selon le format xaxmx. C'est pour cela que j'ai essayé de mettre
au point tout seul (ne me dites pas que ça se voit !!) une fonction qui
permet de le faire.

Je vous présente mon oeuvre :
Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function


Ne vous moquez pas !!

Bonne soirée.

Philippe






"MichDenis"
Si tu prends la fonction que je t'ai donné et que tu remplaces
365.25 par 360 jours dans une année (ce que toi tu utilises)

Pour la valeur 1a6m23 la fonction trouve effectivement 563

DAns une cellule tu inscris : =Nbjours(B1) en supposant
que 1a6m23 soit en B1

Qu'est-ce que tu veux de plus ?

'--------------------------------------------
Function Nbjours(rg As Range)
Dim S As String, Pa As Integer, Pm As Integer
Dim R As Double
S = rg.Value
'Année
Pa = InStr(1, S, "a", vbTextCompare)
If Pa <> 0 Then R = Left(S, Pa - 1) * 360
'Mois
Pm = InStr(1, S, "m", vbTextCompare)
If Pm <> 0 Then R = R + (Mid(S, Pa + 1, Pm - Pa - 1) * 360) / 12
'Jour
If Pm > 0 Then
If Len(S) - Pm > 0 Then R = R + Right(S, Len(S) - Pm)
End If
Nbjours = Application.Round(R, 0)
End Function
'--------------------------------------------


"Philippe B" es%
Bonjour à tous !
A partir d'un nombre de jours, je voudrais le convertir de la façon
suivante
:
xaxmx soit pour 563 jours 1a6m23

Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function

Ca doit certainement se voir, je suis un éternel débutant et je voulais
vous
demander si vous connaissiez un site qui initie aux fonctions et procédure
et surtout la liste des fonctionalités.

Un grand merci par avance de votre aide

Bon dimanche

Amicalement

Philippe






Philippe B
Le #4976341
Bonjour,
Ca marche exactement comme je le voulais, encore mille merci pour ta
patience.

"MichDenis" %
Dans ta cellule tu inscris : = ModFormat(A1)
Dans A1, tu as le nombre d'heures.inscrit

Fonction à copier dans u module standard.
'---------------------------------
Function ModFormat(Rg As Range)

Dim Chaine As String
Dim h As Double, j As Double
Dim T As Long, S As Long

'jours
j = Int(Rg / 24)
If j > 0 Then Chaine = j & "j"

'Heures
h = Int(Rg - (j * 24))
If h > 0 Then Chaine = Chaine & h & "h"

'Minutes
T = (Rg - (j * 24) - h) * 3600
M = Int(T / 60)
If M > 0 Then Chaine = Chaine & M & "m"

'Secondes
S = T Mod 60
If S > 0 Then Chaine = Chaine & S & "s"
ModFormat = Chaine

End Function
'---------------------------------





"Philippe B"
Bonjour,
Avant toute chose un grand merci à MichDenis pour toute son aide.
Désolé de ne pas avoir eu le temps de te dire que tout marchait pour le
mieux.

Mon soucis était que quand j'appelai la fonction Nbjours je renseignai
directement ce que j'avais à transformer en jour du genre :
Nbjours(1a6m23) et là il ne comprenai pas.

Maintenenant mon nouveau souci est à partir d'un nombre de jours je veux
le
transformer selon le format xaxmx. C'est pour cela que j'ai essayé de
mettre
au point tout seul (ne me dites pas que ça se voit !!) une fonction qui
permet de le faire.

Je vous présente mon oeuvre :
Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function


Ne vous moquez pas !!

Bonne soirée.

Philippe






"MichDenis"
Si tu prends la fonction que je t'ai donné et que tu remplaces
365.25 par 360 jours dans une année (ce que toi tu utilises)

Pour la valeur 1a6m23 la fonction trouve effectivement 563

DAns une cellule tu inscris : =Nbjours(B1) en supposant
que 1a6m23 soit en B1

Qu'est-ce que tu veux de plus ?

'--------------------------------------------
Function Nbjours(rg As Range)
Dim S As String, Pa As Integer, Pm As Integer
Dim R As Double
S = rg.Value
'Année
Pa = InStr(1, S, "a", vbTextCompare)
If Pa <> 0 Then R = Left(S, Pa - 1) * 360
'Mois
Pm = InStr(1, S, "m", vbTextCompare)
If Pm <> 0 Then R = R + (Mid(S, Pa + 1, Pm - Pa - 1) * 360) / 12
'Jour
If Pm > 0 Then
If Len(S) - Pm > 0 Then R = R + Right(S, Len(S) - Pm)
End If
Nbjours = Application.Round(R, 0)
End Function
'--------------------------------------------


"Philippe B" es%
Bonjour à tous !
A partir d'un nombre de jours, je voudrais le convertir de la façon
suivante
:
xaxmx soit pour 563 jours 1a6m23

Function xx(NbreJours)
Dim An, Mois, Jour As Integer
An = Int(NbreJours / 360)
Mois = Int(Int(NbreJours - (An * 360)) / 30)
Jour = NbreJours - (An * 360) - (Mois * 30)
xx = An& 'a'&mois&'m'&jour
End Function

Ca doit certainement se voir, je suis un éternel débutant et je voulais
vous
demander si vous connaissiez un site qui initie aux fonctions et
procédure
et surtout la liste des fonctionalités.

Un grand merci par avance de votre aide

Bon dimanche

Amicalement

Philippe











Publicité
Poster une réponse
Anonyme