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 Sub

Cordialement,


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 If

le 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 Sub
Private 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 Sub

Bonjour,

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 Sub

Pour 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 Sub

et 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 Sub

comment 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 Sub

en 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 Sub

code 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 Sub

Merci 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 Sub

Bonjour 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 !

Rechercher des sujets similaires à "transfert donnees via zone liste userform"