OVH Cloud OVH Cloud

Comment m'en sortir ???

20 réponses
Avatar
valenza
Bonjour

j'ai un userform avec des champs et des controles de dates
apr=E8s quelques recherches sur le forum et quelques fonctions, quelques
bonnes =E2mes m'ont aid=E9 en me donnant la possibilit=E9 de trouver
l'=E9cart en mois entre deux dates (je pr=E9cise un mois commenc=E9 est
comptabilis=E9)

Lignes.Value =3D (Year(CDate(Fin.Value)) * 12) + Month(CDate(Fin.Value))
- (Year(CDate(Debut.Value)) * 12) - Month(CDate(Debut.Value)) + 1

ce nombre me permet de recopier autant de lignes ds la feuille excel
que le r=E9sultat trouv=E9
ex : lignes.value =3D6 donc 6 lignes recopi=E9es ds ma feuille

For i =3D 1 To li
num2 =3D Sheets("PRESENCES").Range("A25536").End(xlUp).Row + 1

'MsgBox (Li)

Sheets("PRESENCES").Activate
Range("A" & num2).Value =3D Me.Nom
Range("B" & num2).Value =3D Me.Prenom
Range("C" & num2).Value =3D Me.Lst1
Range("D" & num2).Value =3D Me.Formation
Range("E" & num2).Value =3D Me.Lst2
Range("F" & num2).Value =3D Me.Debut
Range("G" & num2).Value =3D Me.Fin
Range("H" & num2).Value =3D Me.Heures

Next i

Question : comment faire pour que je puisse int=E9grer les mois
concern=E9s et ce autant de fois que n=E9cessaire. Exemple 6 lignes
recopi=E9es car 6 mois =E9coul=E9s entre deux dates, donc ce que
j'aimerais c'est trouver une variable "mois" pour que je puisse ajouter

Range("J" & num2).Value =3D mavariablemois (qui biensur change 6 fois
comme pour l'exemple ci-dessus)

un grand merci d'avance

BV

10 réponses

1 2
Avatar
Alfred WALLACE
wrote:
Bonjour

j'ai un userform avec des champs et des controles de dates
après quelques recherches sur le forum et quelques fonctions, quelques
bonnes âmes m'ont aidé en me donnant la possibilité de trouver
l'écart en mois entre deux dates (je précise un mois commencé est
comptabilisé)

Lignes.Value = (Year(CDate(Fin.Value)) * 12) + Month(CDate(Fin.Value))
- (Year(CDate(Debut.Value)) * 12) - Month(CDate(Debut.Value)) + 1

ce nombre me permet de recopier autant de lignes ds la feuille excel
que le résultat trouvé
ex : lignes.value =6 donc 6 lignes recopiées ds ma feuille

For i = 1 To li
num2 = Sheets("PRESENCES").Range("A25536").End(xlUp).Row + 1

'MsgBox (Li)

Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Nom
Range("B" & num2).Value = Me.Prenom
Range("C" & num2).Value = Me.Lst1
Range("D" & num2).Value = Me.Formation
Range("E" & num2).Value = Me.Lst2
Range("F" & num2).Value = Me.Debut
Range("G" & num2).Value = Me.Fin
Range("H" & num2).Value = Me.Heures

Next i

Question : comment faire pour que je puisse intégrer les mois
concernés et ce autant de fois que nécessaire. Exemple 6 lignes
recopiées car 6 mois écoulés entre deux dates, donc ce que
j'aimerais c'est trouver une variable "mois" pour que je puisse ajouter

Range("J" & num2).Value = mavariablemois (qui biensur change 6 fois
comme pour l'exemple ci-dessus)

un grand merci d'avance

BV


bonjour,
si je peux me permettre (je suis pas un des guruz) , essaye de donner
des objets à tes messages plus précis.

J'ai regardé la réponse à ton post avec comme objet : "SOS je rame"


<<
En dessus de ton module :
Public My_Month (1 to 12) as string
Au début de ton sub, tu charges les mois en mémoire :
My_Month(1)="Janvier"
...
My_Month(12)="Décembre"





comprends du ce qu'il à écrit ?

au dessus de la déclaration de ta routine ("sub machin_chose") tu dois
écrire
Public My_Month (1 to 12) as string

puis, juste en dessous de ta "sub machin_chose" tu dois écrire
My_Month(1)="Janvier"
...
My_Month(12)="Décembre"


puis le reste.


Est-ce que c'est ce que tu as écris ?

Courage !
José


Avatar
valenza
bonjour

oui biensur j'ai essayé mais cela n'a pas fonctionné
en fait lorsque j'essaie de le mettre au dessus de ma sub
il me l'intercale entre la sub précédente et la sub actuelle
du coup il me dit que je n'ai pas le droit d'écrire qque chose après
end sub

j'ai essayé de le mettre tout en haut de la page
et il me dit

instruction incorrecte à l'extérieur d'une procédure
et se positionne sur "janvier"

voilà

BV




wrote:
Bonjour

j'ai un userform avec des champs et des controles de dates
après quelques recherches sur le forum et quelques fonctions, quelques
bonnes âmes m'ont aidé en me donnant la possibilité de trouver
l'écart en mois entre deux dates (je précise un mois commencé est
comptabilisé)

Lignes.Value = (Year(CDate(Fin.Value)) * 12) + Month(CDate(Fin.Value ))
- (Year(CDate(Debut.Value)) * 12) - Month(CDate(Debut.Value)) + 1

ce nombre me permet de recopier autant de lignes ds la feuille excel
que le résultat trouvé
ex : lignes.value =6 donc 6 lignes recopiées ds ma feuille

For i = 1 To li
num2 = Sheets("PRESENCES").Range("A25536").End(xlUp).Row + 1

'MsgBox (Li)

Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Nom
Range("B" & num2).Value = Me.Prenom
Range("C" & num2).Value = Me.Lst1
Range("D" & num2).Value = Me.Formation
Range("E" & num2).Value = Me.Lst2
Range("F" & num2).Value = Me.Debut
Range("G" & num2).Value = Me.Fin
Range("H" & num2).Value = Me.Heures

Next i

Question : comment faire pour que je puisse intégrer les mois
concernés et ce autant de fois que nécessaire. Exemple 6 lignes
recopiées car 6 mois écoulés entre deux dates, donc ce que
j'aimerais c'est trouver une variable "mois" pour que je puisse ajouter

Range("J" & num2).Value = mavariablemois (qui biensur change 6 fois
comme pour l'exemple ci-dessus)

un grand merci d'avance

BV


bonjour,
si je peux me permettre (je suis pas un des guruz) , essaye de donner
des objets à tes messages plus précis.

J'ai regardé la réponse à ton post avec comme objet : "SOS je rame"


<<
En dessus de ton module :
Public My_Month (1 to 12) as string
Au début de ton sub, tu charges les mois en mémoire :
My_Month(1)="Janvier"
...
My_Month(12)="Décembre"





comprends du ce qu'il à écrit ?

au dessus de la déclaration de ta routine ("sub machin_chose") tu dois
écrire
Public My_Month (1 to 12) as string

puis, juste en dessous de ta "sub machin_chose" tu dois écrire
My_Month(1)="Janvier"
...
My_Month(12)="Décembre"


puis le reste.


Est-ce que c'est ce que tu as écris ?

Courage !
José




Avatar
JLuc
Tu te met en debut de module (Ctrl+Home), tu fais Entree, Fleche haut
pour te positionner en premiere ligne, et là, tu tape l'instruction
donnee

--
JLuc
Avatar
valenza
bonjour

tout d'abord désolé mais je lancais mes instructions a partir de mon
userform
et je n'avais pas crée de module

lorsque j'ai suivi les insructions
mon code s'est exécuté sans ne plus pouvoir s'arreter
il devait recopier seulement 14 lignes, il les a apparemment recopiées
mais en ne mettant que janvier sur les 14 lignes, il n'a pas reussi à
trouver la suite logique

CF poulpor : Et donc, il te suffit, quand tu obtiens les numéros de
mois, de retourner le
nom du mois en Français par :
i=1
Range("A1").value=My_Month(i)

je pense que j'ai du me planter à ce niveau là

j'ai mis ca à mon code
Dim li, i
li = Me.Lignes


For i = 1 To li
num2 = Sheets("PRESENCES").Range("A65536").End(xlUp).Row + 1


Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Nom
Range("B" & num2).Value = Me.Prenom
Range("C" & num2).Value = Me.Lst1
Range("D" & num2).Value = Me.Formation
Range("E" & num2).Value = Me.Lst2
Range("F" & num2).Value = Me.Debut
Range("G" & num2).Value = Me.Fin
Range("H" & num2).Value = Me.Heures
i=1
Range("H" & num2).Value = My_Month(i)


je débute en vba je suis désolé
merci de votre compréhension

BV





Tu te met en debut de module (Ctrl+Home), tu fais Entree, Fleche haut
pour te positionner en premiere ligne, et là, tu tape l'instruction
donnee

--
JLuc


Avatar
JLuc
*Bonjour *,

j'ai mis ca à mon code
Dim li, i
li = Me.Lignes


For i = 1 To li
Là, tu boucle sur i :Ok

num2 = Sheets("PRESENCES").Range("A65536").End(xlUp).Row + 1


Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Nom
Range("B" & num2).Value = Me.Prenom
Range("C" & num2).Value = Me.Lst1
Range("D" & num2).Value = Me.Formation
Range("E" & num2).Value = Me.Lst2
Range("F" & num2).Value = Me.Debut
Range("G" & num2).Value = Me.Fin
Range("H" & num2).Value = Me.Heures
i=1
Mais là, tu réinitialise i : pas bon, à chaque boucle i vaut 2 jusqu'à

là, puis 1 jusqu'à la fin !! il faut enlever cette ligne, çà ira mieux
ensuite

Range("H" & num2).Value = My_Month(i)


je débute en vba je suis désolé
Ne sois pas désolé, on a tous débuté

merci de votre compréhension

BV





Tu te met en debut de module (Ctrl+Home), tu fais Entree, Fleche haut
pour te positionner en premiere ligne, et là, tu tape l'instruction
donnee

--
JLuc



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
valenza
un grand merci déjà pour votre compréhension et votre bienveillance
j'ai appliqué à la lettre et ça fonctionne ........ à moitié
(c'est un excellent départ)

j'ai maintenant mes mois qui apparaissent bien dans ma cellule mais en
fait
le nb de lignes donne le pas en partant de janvier et non en tenant
compte du debut
de ma date de départ

exemple : 24/03/06 au 21/05/06
nb de lignes à créer : 3
et la macro me met : janvier - février - mars et non pas mars - avril
- mai

comment faire pour qu'il m'écrive les mois à partir de ma date de
départ
est ce que dois transformer mon (i) ?
est ce que je dois faire une formule pour qu'il me récupére le mois
de ma date et qu'il parte de là ?

merci

BV



*Bonjour *,

j'ai mis ca à mon code
Dim li, i
li = Me.Lignes


For i = 1 To li
Là, tu boucle sur i :Ok

num2 = Sheets("PRESENCES").Range("A65536").End(xlUp).Row + 1


Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Nom
Range("B" & num2).Value = Me.Prenom
Range("C" & num2).Value = Me.Lst1
Range("D" & num2).Value = Me.Formation
Range("E" & num2).Value = Me.Lst2
Range("F" & num2).Value = Me.Debut
Range("G" & num2).Value = Me.Fin
Range("H" & num2).Value = Me.Heures
i=1
Mais là, tu réinitialise i : pas bon, à chaque boucle i vaut 2 jusq u'à

là, puis 1 jusqu'à la fin !! il faut enlever cette ligne, çà ira mieux
ensuite

Range("H" & num2).Value = My_Month(i)


je débute en vba je suis désolé
Ne sois pas désolé, on a tous débuté

merci de votre compréhension

BV





Tu te met en debut de module (Ctrl+Home), tu fais Entree, Fleche haut
pour te positionner en premiere ligne, et là, tu tape l'instruction
donnee

--
JLuc



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O




Avatar
JLuc
Salut,
Tu fais ta boucle ainsi :

For i = Month([moisdedepart]) To Month([moisdedepart]) + li
...
...
Next

[moisdedepart] est la variable ou le controle à partir duquel tu va
recupérer la date

avait soumis l'idée :
un grand merci déjà pour votre compréhension et votre bienveillance
j'ai appliqué à la lettre et ça fonctionne ........ à moitié
(c'est un excellent départ)

j'ai maintenant mes mois qui apparaissent bien dans ma cellule mais en
fait
le nb de lignes donne le pas en partant de janvier et non en tenant
compte du debut
de ma date de départ

exemple : 24/03/06 au 21/05/06
nb de lignes à créer : 3
et la macro me met : janvier - février - mars et non pas mars - avril
- mai

comment faire pour qu'il m'écrive les mois à partir de ma date de
départ
est ce que dois transformer mon (i) ?
est ce que je dois faire une formule pour qu'il me récupére le mois
de ma date et qu'il parte de là ?

merci

BV


--
JLuc

Avatar
valenza
j'ai juste une question est ce que je dois faire comme ca ?

Private Sub Valide_Click()

My_Month(1) = "Janvier"
My_Month(2) = "Février"
My_Month(3) = "Mars"
My_Month(4) = "Avril"
My_Month(5) = "Mai"
My_Month(6) = "Juin"
My_Month(7) = "juillet"
My_Month(8) = "Août"
My_Month(9) = "Septembre"
My_Month(10) = "Octobre"
My_Month(11) = "Novembre"
My_Month(12) = "Décembre"

Dim li, i
li = Me.Lignes

For i = 1 To li
num2 = Sheets("PRESENCES").Range("A25536").End(xlUp).Row + 1

For i = Month([moisdedepart]) To Month([moisdedepart]) + li

'MsgBox (Li)

Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Cmb_chantier
Range("B" & num2).Value = Me.Nom
Range("C" & num2).Value = Me.Prenom
Range("D" & num2).Value = Me.Lst1
Range("E" & num2).Value = Me.Formation
Range("F" & num2).Value = Me.Lst2
Range("G" & num2).Value = Me.Debut
Range("H" & num2).Value = Me.Fin
Range("I" & num2).Value = Me.Heures
Range("K" & num2).Value = My_Month(i)

Next i


parce que j'ai deux variable i et ca me semble bizzare

bv





Salut,
Tu fais ta boucle ainsi :

For i = Month([moisdedepart]) To Month([moisdedepart]) + li
...
...
Next

[moisdedepart] est la variable ou le controle à partir duquel tu va
recupérer la date

avait soumis l'idée :
un grand merci déjà pour votre compréhension et votre bienveillan ce
j'ai appliqué à la lettre et ça fonctionne ........ à moitié
(c'est un excellent départ)

j'ai maintenant mes mois qui apparaissent bien dans ma cellule mais en
fait
le nb de lignes donne le pas en partant de janvier et non en tenant
compte du debut
de ma date de départ

exemple : 24/03/06 au 21/05/06
nb de lignes à créer : 3
et la macro me met : janvier - février - mars et non pas mars - avril
- mai

comment faire pour qu'il m'écrive les mois à partir de ma date de
départ
est ce que dois transformer mon (i) ?
est ce que je dois faire une formule pour qu'il me récupére le mois
de ma date et qu'il parte de là ?

merci

BV


--
JLuc



Avatar
JLuc
avait soumis l'idée :
j'ai juste une question est ce que je dois faire comme ca ?



Non

Private Sub Valide_Click()

My_Month(1) = "Janvier"
My_Month(2) = "Février"
My_Month(3) = "Mars"
My_Month(4) = "Avril"
My_Month(5) = "Mai"
My_Month(6) = "Juin"
My_Month(7) = "juillet"
My_Month(8) = "Août"
My_Month(9) = "Septembre"
My_Month(10) = "Octobre"
My_Month(11) = "Novembre"
My_Month(12) = "Décembre"

Dim li, i
li = Me.Lignes

For i = 1 To li
Ce premier for, tu le supprime


num2 = Sheets("PRESENCES").Range("A25536").End(xlUp).Row + 1
Cette ligne doit passée dans le deuxieme for


For i = Month([moisdedepart]) To Month([moisdedepart]) + li
ICI


'MsgBox (Li)

Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Cmb_chantier
Range("B" & num2).Value = Me.Nom
Range("C" & num2).Value = Me.Prenom
Range("D" & num2).Value = Me.Lst1
Range("E" & num2).Value = Me.Formation
Range("F" & num2).Value = Me.Lst2
Range("G" & num2).Value = Me.Debut
Range("H" & num2).Value = Me.Fin
Range("I" & num2).Value = Me.Heures
Range("K" & num2).Value = My_Month(i)

Next i


parce que j'ai deux variable i et ca me semble bizzare

bv





Salut,
Tu fais ta boucle ainsi :

For i = Month([moisdedepart]) To Month([moisdedepart]) + li
...
...
Next

[moisdedepart] est la variable ou le controle à partir duquel tu va
recupérer la date

avait soumis l'idée :
un grand merci déjà pour votre compréhension et votre bienveillance
j'ai appliqué à la lettre et ça fonctionne ........ à moitié
(c'est un excellent départ)

j'ai maintenant mes mois qui apparaissent bien dans ma cellule mais en
fait
le nb de lignes donne le pas en partant de janvier et non en tenant
compte du debut
de ma date de départ

exemple : 24/03/06 au 21/05/06
nb de lignes à créer : 3
et la macro me met : janvier - février - mars et non pas mars - avril
- mai

comment faire pour qu'il m'écrive les mois à partir de ma date de
départ
est ce que dois transformer mon (i) ?
est ce que je dois faire une formule pour qu'il me récupére le mois
de ma date et qu'il parte de là ?

merci

BV


--
JLuc



--
JLuc



Avatar
valenza
quel bonheur ! merci bq je vs suis vraiment reconnaissant

ca fonctionne nickel sauf...... qu'il me compte toujours un mois en
plus

ex du 15/01/06 au 31/01/06 j'ai janvier et février
ex du 15/07/06 au 31

donc j'ai mis (je sais c'est du bricolage) :

For i = Month([Debut]) To Month([Debut]) + li - 1



un grand merci
BV



avait soumis l'idée :
j'ai juste une question est ce que je dois faire comme ca ?



Non

Private Sub Valide_Click()

My_Month(1) = "Janvier"
My_Month(2) = "Février"
My_Month(3) = "Mars"
My_Month(4) = "Avril"
My_Month(5) = "Mai"
My_Month(6) = "Juin"
My_Month(7) = "juillet"
My_Month(8) = "Août"
My_Month(9) = "Septembre"
My_Month(10) = "Octobre"
My_Month(11) = "Novembre"
My_Month(12) = "Décembre"

Dim li, i
li = Me.Lignes

For i = 1 To li
Ce premier for, tu le supprime


num2 = Sheets("PRESENCES").Range("A25536").End(xlUp).Row + 1
Cette ligne doit passée dans le deuxieme for


For i = Month([moisdedepart]) To Month([moisdedepart]) + li
ICI


'MsgBox (Li)

Sheets("PRESENCES").Activate
Range("A" & num2).Value = Me.Cmb_chantier
Range("B" & num2).Value = Me.Nom
Range("C" & num2).Value = Me.Prenom
Range("D" & num2).Value = Me.Lst1
Range("E" & num2).Value = Me.Formation
Range("F" & num2).Value = Me.Lst2
Range("G" & num2).Value = Me.Debut
Range("H" & num2).Value = Me.Fin
Range("I" & num2).Value = Me.Heures
Range("K" & num2).Value = My_Month(i)

Next i


parce que j'ai deux variable i et ca me semble bizzare

bv





Salut,
Tu fais ta boucle ainsi :

For i = Month([moisdedepart]) To Month([moisdedepart]) + li
...
...
Next

[moisdedepart] est la variable ou le controle à partir duquel tu va
recupérer la date

avait soumis l'idée :
un grand merci déjà pour votre compréhension et votre bienveill ance
j'ai appliqué à la lettre et ça fonctionne ........ à moiti é
(c'est un excellent départ)

j'ai maintenant mes mois qui apparaissent bien dans ma cellule mais en
fait
le nb de lignes donne le pas en partant de janvier et non en tenant
compte du debut
de ma date de départ

exemple : 24/03/06 au 21/05/06
nb de lignes à créer : 3
et la macro me met : janvier - février - mars et non pas mars - avr il
- mai

comment faire pour qu'il m'écrive les mois à partir de ma date de
départ
est ce que dois transformer mon (i) ?
est ce que je dois faire une formule pour qu'il me récupére le mo is
de ma date et qu'il parte de là ?

merci

BV


--
JLuc



--
JLuc





1 2