Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion br44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

br44

XLDnaute Impliqué
Bonjour le forum,


j'ai une petite question à vous poser. Je voudrais savoir si il existe une formule VBA pour décaler un MOIS à partir d'un USerfrom ?

Je m'explique je voudrais afficher Mois +1 dans une cellule située dans un classeur (T.xls) par raport au mois qui s'affiche dans l'userform de mon classeur (F.xls ) .

Exemple :

Si J'ai le Mois de janvier dans ("F.xls") alors MOIS de Fèvrier dans le classeur ("T.xls") Soit en code :

Wb2.Sheets("Détail").Range("C3").Value="JANVIER"
Alors
Wb5.Sheets("Tournée").Range("C3").Value= "FEVRIER"

Où de l'UserForm (Pas sur de la formulation)

MOIS.Value=Wb5.Sheets("Tournée").Range("C3").Value =MOIS +1 .Value

J'espère avoir ètè claire dans ma demande et je vous remercie par avance de votre aide . A bientôt sur se fil BR44
 
Re : Mois +1 en vba

Bonsoir br44 🙂,

je suppose que "MOIS" correspond au nom du textbox.

MOIS.Value=Wb5.Sheets("Tournée").Range("C3").Value =MOIS +1 .Value
Ca na ne marche pas.

Plutôt comme ça:

Code:
MOIS.Value=Month(Wb5.Sheets("Tournée").Range("C3").Value) + 1
Le problème c'est que tu veux additionner du texte avec un nombre.........
il faut que la cellule C3 soit au format date.

Code:
Wb5.Sheets("Tournée").Range("C3").Value=#01/01/07#
Wb5.Sheets("Tournée").Range("C3").NumberFormat = "mmmm"

Edit: si tu veux que soit écris "Février" au lieu de "2" dans le textbox, il faut que tu mettes une condition du genre:

Select Case Mois.Value
Case 1: Mois.Value = "Janvier"
Case 2: Mois.Value = "Février"
.....
....
End Select
 
Dernière édition:
Re : Mois +1 en vba

bonjour br44

Re Salut skoobi

une proposition a tester

Code:
D1=cdate("01/" & Wb2.Sheets("Détail").Range("C3").Value & "/2008")
M2=month(D1)+1
D2=cdate("01/"& M2 & "/2008")
Wb5.Sheets("Tournée").Range("C3").Value=format(D2,"mmmm")
MOIS.Value=format(D2,"mmmm")
 
Re : Mois +1 en vba

Re: Bonsoir PierreJean,Skoobi ,le forum


Merçi à vous deux pour ces rèponses .

PierreJean : pas le tepms de tester se soir ,mais je te tient au courant dès que possibles ,merçi encore pour ta rapidité .

Skoobi: pour rèpondre à, tes questions :

1) OUI mais sagit d'une listeBox

2) Non je veux pas aditioner des "mois" et des "nombres" je veux juste affiché le mois suivant en toute lettres dans une feuille vierge avant l'imprimé .

3) Un exemple :Si la listeBox affiche "JANVIER" Je voudrais que "FEVRIER" s'affiche dans l'autres classeur .

4) Je pensais bien passer par un selectCase .


Le but de cette question et que je prèpare une nouvelle macro qui me permettrais d'imprime des documents pour le mois suivant aprés avoir imprimé les factures du mois en court .


je vous dis à trés vite et vous tient au courant sur se post avec un petit fichier si j'ai problème . A bientôt et bonne soirée à tous BR44
 
Re : Mois +1 en vba

RE: Bonjour le forum ,

Comme prèvu dans mon dernier message je vous donne des nouvelles .

j'ai essayé de faire un programme qui me permetrais de remplire des cellelues situées dans un autre classeur à partire de mon classeur principal .

Je joint un fichier avec des explications et une ebauche de programme basé sur les rèponses reçues .

Je me tient prêt à répondre à toutes questions qui vous serez utile .

Vous remerciant par avance de votre aide je vous dis à plus sur se fil
BR44
 

Pièces jointes

Re : Mois +1 en vba

Re: Bonsoir le forum ,


pierrejean : je voudrais tester t'as proposition ,mais tu n'as pas les déclaration de variables . peux-tu me les donneés s.v.p merçi .

A plus BR44
 
Re : Mois +1 en vba

Re: bonsoir le forum,


Un petit point sur mon projet . j'ai commencer une macro qui m'affiche bien la valeure de ma listebox dans le classeur de destination .

Je voudrais maintenant le completer pour que la valeure afficher soit diffèrante de la valeure de la listeBox .

Je m'explique: Si je selectionne le Mois de "Janvier" dans ma listeBox (mois en court) je voudrais qu'il m'affiche le Mois de "Fèvrier" dans le classeur de destination(mois suivant) afin d'imprimer ce classeur après l'impression du mois en court.

Voici la macro consernée :

'Déclare le Chemin1 vers "Tournée de Rammasage Nantes.xls"
Dim Chemin As String
'Dèclare la variable Wb3
Dim Wb1 As Workbook
Dim Wb2 As Workbook

'Dèfinit la varible Chemin
Chemin = "C:\RAPID\TOURNEES\RAMASSAGES\TOURNÉES DE RAMASSAGE NANTES.xls"
'Dèfinit la varaible Wb3 et Wb2
Set Wb1 = Workbooks.Open(Chemin)
Set Wb2 = ThisWorkbook

With Wb1
.Sheets("TournèeCentreVille").Range("C3").Value = Mois.Value
End With


With Wb1
.Sheets("TournèeNordLoire").Range("C3").Value = Mois.Value
End With

With Wb1
.Sheets("TournèeSudLoire").Range("C3").Value = Mois.Value
End With

J'ai essayer plusieur possibiliter dont une avec une autres liste de mois que j'ai nomé MonMois qui se prèsente de la façon suivante :

'Je Remplie ma liste de MonMois
MonMois.AddItem ("FEVRIER")
MonMois.AddItem ("MARS")
MonMois.AddItem ("AVRIL")
MonMois.AddItem ("MAI")
MonMois.AddItem ("JUIN")
MonMois.AddItem ("JUILLET")
MonMois.AddItem ("AOUT")
MonMois.AddItem ("SEPTEMBRE")
MonMois.AddItem ("OCTOBRE")
MonMois.AddItem ("NOVEMBRE")
MonMois.AddItem ("DECEMBRE")
MonMois.AddItem ("JANVIER")

je pensais ensuite dèclarer une varaible MonMois pour pouvoir ecrire ceci :

Mois.Value=MonMois.value

Mais là j'ai un problème pour le choix de ma variable ,dois-je la passée en "As String "où en "As Range" ?


Voilà ou j'en suis actuellement si quelqu'un peut m'aider pour compléter cette macro ,je vous en remerçi par avance . A plus donc sur se fil
BR44
 
Re : Mois +1 en vba

Re: Bonjour à tous le forum,

J'ai du mal m'expliquer sur ma demande et donc je mets fin à se fil .

Je remerçie tous ceux qui ont pris le temps de lire et vous dis à plus sur un nouveau poste sur le forum .

Merçi br44
 
Re : Mois +1 en vba

Bonjour br44, pierrejean, skoobi

Si j'ai bien compris, un exemple à adapter:

Dans ton fichier en PJ, sur la feuille 2 tu as un exemple de code pour ton fichier de destination et un bouton.
Click dessus, il ouvre un UserForm avec une listbox, sélectionne un mois et valide. Tu auras en colonne A Le mois M+1.

Bonne fin de journée
 

Pièces jointes

Re : Mois +1 en vba

RE: Bonjour Bqtr ,le forum

Je veux d'adresse un très grand merçi pour ta macro qui fonctionne .

Il y a deux petites choses qui bloque mais rien de très grave .

je te joint en retoure le fichier avec les modifs que j'ai apporté et les qestions que je me pose .

Just une question en plus :

Est-il possible que la macro se dèclanche qu'une seul fois ? je m'explique :

J'ai placer ta macro sur le bouton valider dèjà existant , hors cela va ouvrir le classeur Wb1 à chaque validation . Je n'ais besoin que d'1 validation pour ce classeur puisque l'enregistrement se fais une fois par mois .

Je n'est pas tester mais avec une condition supplèmentaire basè sur les premières "REF" de chaque feuille du classeur de destionation cela devrais fonctioner ?


En te remerciant par avance et je te dis à bientôt sur se post
Merçi encore BR44
 

Pièces jointes

Re : Mois +1 en vba

Re: rebonjour Bqtr,le forum

Petite Infos : J'ai rèsolue le problème de l'affichage pour les autres feuilles de destinnation .

Erratum: La condition est pour le classeur Wb2 (classeur source) est pas pour le classeur Wb1(classeur dèstination) dèsolé pour l'erreure .😛


A bientôt Br44
 
Re : Mois +1 en vba

Re bonjour,

Pour ta question 1 : c'est résolu à priori

Pour ta question 2 : rajoute la fonction UCase qui permet de mettre en majuscule le contenu d'une cellule.
[CODE
.Cells(i, 3) = UCase(Format(DateSerial(1, MOIS.ListIndex + 2, 1), "mmmm"))
[/code]

Pour ta question 3 :
J'utilise la fonction DateSerial qui permet de reconstruire une date à partir de 3 arguments: Year, Month, Day.

ListBox1.Listindex : les éléments d'une listbox sont indexés, (numérotés) à partir de zéro. L'index 0 correspond à janvier (1er élément de la liste), le 1 à février (2ème élément de la liste) .../...
Comme tu veux avoir le mois M+1 il faut rajouter 2 à l'index.

La fonction Format formate le contenu souhaité, ici "mmmm" correspond au nom du mois, "mm" indique le numéro du mois.

La fonction With (traduction Avec) te permet de travailler avec un objet, ici le classeur et les feuilles sans avoir à réécrire le nom du classeur ou de la feuille. D'où le point devant Cells(i,3) qui correspond en fait au nom de la feuille.

Si l'aide VBA est installé sur ton ordi fait une recherche sur les mots clés en bleu.

Enfin pour ton bouton valider, tout dépend de ce qu'il fait. S'il fait le transfert sur l'autre classeur et autre chose sur ton classeur source, le mieux serait de créer un bouton uniquement pour faire le transfert avec éventuellement un test de confirmation.

Bonne journée

 
Re : Mois +1 en vba

Re: Rebonjour Bqtr,le forum,


Merçi à toi pour toutes ces rèponses et sourtout pour la première .

Pour se qui conserne la condition effectivement il me sert à la validation de mes factures ,d'où la question que je posait . Il existe peut-être une macro qui limitrait l'ouverture du classeur de destination ? je faire des recherche là dessus .

Bon et bien merçi encore pour le coup de main si j'ai un nouveau problème je mettrais un message sur l'autre fil , pour mêtre fin à celui-ci .


Bonne Journèe à toi et à bientôt sur le forum . br44
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
501
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…