Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème sur une fonction !

4 réponses
Avatar
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

4 réponses

Avatar
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" a écrit dans le message de news:
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
Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de news:
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






Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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" a écrit dans le message de news:
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






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

"MichDenis" a écrit dans le message de news:
%
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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" a écrit dans le message de news:
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