Transfert de données via une zone de liste sur UserForm
Bonjour à vous tous !
Je suis dans la mouise, j'ai besoin de votre aide, vous grand Dieu d'excel !
J'essais actuellement via un UserForm de mettre en place une condition qui me permettrais via une zone de liste nommé "cbomois" de transférer des données sur des différentes pages excel.
j'explique plus en détail :
les mois comme on le sait :
janvier : 01
février : 02, etc...
Si le cbomois = 01 alors il transfert les données des autres zones de texte voulu sur la page janvier
Si le cbomois = 02 alors il transfert les données des autres zones de texte voulu sur la page Février
j'essai de trouver un codage me permettant de faire ça, mais je n'y arrive pas du tout et sur le net, il y a rien.
J''espère que vous allez pouvoir m'aider.
Je vous remercie d'avance pour vos réponses
Bonjour ManusDei, le forum,
Pour sélectionner une feuille à partir de la listbox:
Private Sub ListBox1_Click()
Worksheets(ListBox1.Value).Select 'on sélectionne la feuille suivant le n°choisi dans la listbox
End Sub
Private Sub UserForm_Initialize()
ListBox1.List = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12") 'liste des feuilles de la listbox
End SubCordialement,
A tester
Bonjour,
je vous remercie, grâce à vous tout est ok !
Par contre j'ai une question à vous poser, comment je peux faire pour passer d'une ligne à la suivante après avoir cliqué sur enregistré ?
dans ma macro j'ai :
If cbomois = "Janvier" Then
Sheets("Janvier").Activate
Range("a3").Select
Selection.Offset(1, 0).Select
Selection.End(xlDown).Select
ActiveCell = cbotransp1
ActiveCell.Offset(0, 1).Value = txtNsemaine
ActiveCell.Offset(0, 2).Value = cboagenc
ActiveCell.Offset(0, 3).Value = txtdateliv
ActiveCell.Offset(0, 4).Value = txtcpte
ActiveCell.Offset(0, 5).Value = txtpxtttrans
ActiveCell.Offset(0, 6).Value = txtcommentaire
For i = 1 To 1
Selection.Offset(1, 0).Select
Next
End Ifle code fonctionne bien, tout ce met là ou il faut, le soucis, c'est qu'il modifie toujours la même ligne (la ligne 5) la ligne 4 étant les noms des colonnes et ne passe pas à la ligne suivante (j'essais de faire en sorte qu'une fois que j'appuis sur le bouton "Ajouter" nommé "bntajouter" enregistre sur la ligne puis passe à la suivant pour pouvoir enregistrer sur l'autre.
Re,
As-tu essayer le fichier joint ci-dessus? Les instructions sont bien écrites les unes en dessous des autres sur la feuille choisie (colonne A).
A tester :
Private Sub cbomois_Click()
Worksheets(cbomois.Value).Select 'on sélectionne la feuille suivant le n°choisi dans la listbox cbomois
End Sub
Private Sub UserForm_Initialize()
cbomois.List = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12") 'liste des feuilles de la listbox
'tu peux remplacer par = Array("Janvier","Février",etc...) à condition de renommer les onglets de la même façon
End SubPrivate Sub CommandButton1_Click() 'bouton valider du userform
Num = ActiveSheet.Range("A65535").End(xlUp).Row + 1
'écrit sur la première ligne vide de la feuille active'
'La feuille active étant déterminée par le choix de la listbox cbomois
Range("A" & Num).Value = txtNsemaine
Range("B" & Num).Value = cboagenc
Range("C" & Num).Value = txtdateliv
Range("D" & Num).Value = txtcpte
Range("E" & Num).Value = txtpxtttrans
Range("F" & Num).Value = txtcommentaire
End SubBonjour,
merci pour ta réponse !
Non je suis désolé je n'avais pas vu le fichier que tu avais joint.
J'ai une question, ou dois-je mettre cette partie de code ?
Private Sub UserForm_Initialize()
cbomois.List = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "septembre", "Octobre", "Novembre", "Decembre") 'liste des feuilles de la listbox
'tu peux remplacer par = Array("Janvier","Février",etc...) à condition de renommer les onglets de la même façon
End SubPour le bouton "ajouter" j'ai comme code, via ce que tu m'as donné :
Private Sub btnajoutermois_Click() 'bouton valider du userform
Num = ActiveSheet.Range("A65535").End(xlUp).Row + 1
'écrit sur la première ligne vide de la feuille active'
'La feuille active étant déterminée par le choix de la listbox cbomois
Range("A" & Num).Value = cbonbrtransp
Range("B" & Num).Value = txtNsem
Range("C" & Num).Value = cboagence
Range("D" & Num).Value = txtdateliv
Range("E" & Num).Value = txtNaffaire
Range("F" & Num).Value = txtpxtttransp
Range("G" & Num).Value = txtcommentaire
End Subet via ce code
Private Sub UserForm_Initialize()
cbomois.List = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "septembre", "Octobre", "Novembre", "Decembre") 'liste des feuilles de la listbox
'tu peux remplacer par = Array("Janvier","Février",etc...) à condition de renommer les onglets de la même façon
End Subcomment je pourrais ajouter une fonction qui imprime la feuille selon le mois ?
j'ai déjà ce code qui me permet d'imprimer :
'***********************************
'procédure pour imprimer le mois
'***********************************
Private Sub btnimprimermois_Click()
Sheets("Janvier").Activate
Worksheets("Fiche").Range("A1:P49").PrintOut
End Suben tout cas je te remercie énormément pour ton aide !
Re,
j'ai un soucis, j'ai réussis à tout bien placer comme il faut, sauf qu'il ne détecte pas les pages lorsque je sélectionnes le mois dans la zone de liste
lorsque j'active et lance le userform, et que je vais dans la partie ou il y a la zone de liste, tout va bien, quand je clic sur "Fevrier" ou voir même "Janvier" et que je clique sur le bouton "ajouter" tout ce met sur la même page (la page est ouverte)
elle ne se sélectionne pas automatiquement comme dans ton fichier que tu as mis en pièce jointe
code du bouton "ajouter"
Private Sub btnajoutermois_Click() 'bouton valider du userform
Num = ActiveSheet.Range("A65535").End(xlUp).Row + 1
'écrit sur la première ligne vide de la feuille active'
'La feuille active étant déterminée par le choix de la listbox cbomois
Range("A" & Num).Value = cbonbrtransp
Range("B" & Num).Value = txtNsem
Range("C" & Num).Value = cboagence
Range("D" & Num).Value = txtdateliv
Range("E" & Num).Value = txtNaffaire
Range("F" & Num).Value = txtpxtttransp
Range("G" & Num).Value = txtcommentaire
End Subcode de la zone de liste "Mois" :
'**************************
'procédure d'ajout de données
'******************************
Private Sub cbomois_Click()
Worksheets(cbomois.Value).Select 'on sélectionne la feuille suivant le n°choisi dans la listbox cbomois
End Sub
Private Sub UserForm_Initialize()
cbomois.List = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre") 'liste des feuilles de la listbox
'tu peux remplacer par = Array("Janvier","Février",etc...) à condition de renommer les onglets de la même façon
End SubMerci d'avance pour ta réponse
Re,
c'est bon le problème a été résolut
Par contre, comment je pourrais faire pour pouvoir imprimer les fiches du mois selon le mois sélectionné dans le "cbomois" ?
c'est à dire lorsque cbomois = janvier alors imprimer la page janvier
j'ai pour code :
'***********************************
'procédure pour imprimer le mois
'***********************************
Private Sub btnimprimermois_Click()
Worksheets("cbomois.value").Range("A1:H99", "I1:P49").PrintOut
End SubBonjour ManusDei, le forum,
Il faut que tu supprimes les "" de ton code : ("cbmois.value") indique que tu appelle la feuille nommée cbomois.value
Private Sub btnimprimermois_Click()
Worksheets(cbomois.value).Range("A1:H99", "I1:P49").PrintOut
End Sub
Bonjour,
Ah d'accord, oui effectivement, je n'avait pas remarqué cette erreur je te remercie de me l'avoir montré.
J'ai une question encore une toute dernière question
Comment je pourrais envoyer via ma macro et un par bouton une page sous format pdf nommé "Fiche" ?
Là par contre j'arrive pas à trouver les codes et je ne sais pas du tout si c'est possible.
en tout cas je te remercie énormément pour toutes tes réponses qui m'aide énormément !
Bonjour ManusDei, le forum,
Pour enregistrer ta feuille "Fiche" en pdf : macro à associer à ton bouton
Sub EnregistrementPDF()
With Sheets("Fiche")
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\maison\Downloads\Fiche.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End With
End Sub- Chemin : C:\Users\maison\Downloads\ à adapter
- Nom du fichier : Fiche.pdf à adapter
- OpenAfterPublish:= _ False : mets True si tu veux que le fichier PDF s'ouvre une fois enregistré
Cordialement,
Re bonjour,
ok d'accord je te remercie, je vais appliquer ça.
en tout cas merci pour tout !