désignation de valeur dans une listbox

  • Initiateur de la discussion Initiateur de la discussion ifi77
  • 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 !

ifi77

XLDnaute Occasionnel
Bonjour,

j'ai créer un formulaire permettant d'alimenter une listbox, j'aimerais avec le bouton valider transmettre les informations contenus dans la textbox1 vers une classeur contenant les fiches des personnels contenus dans la listbox1

j'ai essayer, mais je n'arrive pas à définir la variable faisant référence à chacun des personnel de listebox1

je vous mets le formulaire ainsi que le fichier dans lequel l'info doit etre reportée.

si vous avez une idée merci.
 

Pièces jointes

Re : désignation de valeur dans une listbox

Bonsoir

Ci joint le fichier avec les macros pour écrire dans les différents onglets.

A tester et à compléter.

Macro à rajouter pour sauvegarder les modifications.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks(classeur2c).Close SaveChanges:=True
End Sub

JP
 

Pièces jointes

Dernière édition:
Re : désignation de valeur dans une listbox

Bonjour jp,

tout d'abord merci pour ta réponse, je l'ai essayé mais cela en fonctionne pas. Vu que cela dépasse mon niveau je n'arrive pas à controler ce qui pourrait ne pas fonctionner. pourtant j'ai bien mis le fichier dans le meme repertoire que la base, j'ai bien compris que le report se faisait en fonction des cellules remplies dans type de formation. Mais je ne comprends pas le code que tu as mis pour le report.

Dim Lig1 As Long
Dim Col1 As String
Dim Nbcol As Byte
Dim Derli As Long
Dim i As Long
If Me.ListBox1.ListCount = 0 Then Exit Sub
If TextBox1 = "" Then Exit Sub
If Nbcol = 3 Then
If TextBox3 = "" Then Exit Sub
End If
If TextBox2 = "" Then Exit Sub

Lig1 = CLng(ComboBox1.List(ComboBox1.ListIndex, 1))
Col1 = ComboBox1.List(ComboBox1.ListIndex, 2)
Nbcol = CByte(ComboBox1.List(ComboBox1.ListIndex, 3))
ouverturecla
For i = 0 To Me.ListBox1.ListCount - 1

With Workbooks(classeur2).Sheets(ListBox1.List(i))
Dl1 = .Range(Col1 & "65536").End(xlUp).Row + 1
.Range(Col1 & Derli) = TextBox1
.Range(Col1 & Derli).Offset(0, 1) = TextBox2
If Nbcol = 3 Then
.Range(Col1 & Derli).Offset(0, 2) = TextBox3
End If

si tu peux me l'expliquer afin que je puisse l'adapter.

encore un grand merci.
 
Re : désignation de valeur dans une listbox

Bonsoir

Ci dessous la procédure avec des commentaires et des messages.

Code:
Private Sub CommandButton2_Click()
' on recupere la ligne, la colonne,le nombre de colonnes
Dim Lig1 As Long
Dim Col1 As String
Dim Nbcol As Byte
Dim Derli As Long
Dim i As Long
' controles données à modifier
If Me.ComboBox1 = "" Then
        Call MsgBox("Vous n'avez pas indiqué le :" & Me.Label1.Caption _
                & vbCrLf & "" _
                , vbExclamation, Application.Name)
    Exit Sub
End If

If Me.ListBox1.ListCount = 0 Then
    Call MsgBox("Vous n'avez pas sélectionneé des personnes", vbInformation, Application.Name)
    Exit Sub
End If
If TextBox1 = "" Then
    Call MsgBox("Vous n'avez pas indiqué le :" & Me.Label2.Caption _
                & vbCrLf & "" _
                , vbExclamation, Application.Name)
    Exit Sub
End If

If Nbcol = 3 Then
If TextBox3 = "" Then
    Call MsgBox("Vous n'avez pas indiqué le :" & Me.Label3.Caption _
                & vbCrLf & "" _
                , vbExclamation, Application.Name)
    Exit Sub
End If
End If
If TextBox2 = "" Then
    Call MsgBox("Vous n'avez pas indiqué le :" & Me.Label4.Caption _
                & vbCrLf & "" _
                , vbExclamation, Application.Name)
    Exit Sub
End If
' on récupère les info
Lig1 = CLng(ComboBox1.List(ComboBox1.ListIndex, 1)) ' numéro de ligne statistiques générales
Col1 = ComboBox1.List(ComboBox1.ListIndex, 2) ' colonne concernant le thème ou type d'action
Nbcol = CByte(ComboBox1.List(ComboBox1.ListIndex, 3)) ' nombre de colonnes si 3 alors date
' on vérifie que le classeur est ouvert
ouverturecla

' pour tous les noms de la listbox
For i = 0 To Me.ListBox1.ListCount - 1 ' index i le premier ayant la valeur 0

With Workbooks(classeur2).Sheets(ListBox1.List(i)) ' on sélectionne la feuille de la personne
Dl1 = .Range(Col1 & "65536").End(xlUp).Row + 1 ' on recherche la ligne à écrire
.Range(Col1 & Derli) = TextBox1 ' on écrit dans les cellules
.Range(Col1 & Derli).Offset(0, 1) = TextBox2
If Nbcol = 3 Then ' si 3 colonnes on inscrit la date
.Range(Col1 & Derli).Offset(0, 2) = TextBox3
End If

End With
Next i ' au suivant

End Sub


JP
 
Re : désignation de valeur dans une listbox

bonjour jp et encore merci,

j'ai cependant un petit probleme, il me met erreur d'application 1007 et me surligne

.Range(Col1 & Derli) = TextBox1 ' on écrit dans les cellules

à titre d'info, à quoi correspond "derli"


J'ai bien modifier les colonnes correspondant au fichier de destination, j'ai bien le fichier de destination dans le meme repertoire.

je seche, j'ai besoin de toi

merci encore

@+
 
Re : désignation de valeur dans une listbox

Merci jp,

j'ai un petit souci car je n'arrive pas à acceder au classeur ou se trouve le personnel, il est ouvert mais invisible, tu as du mettre quelquechose pour le cacher car il apparait dans l'explorateur de macro mais je n'arrive pas à l'ouvrir, pourrais tu m'aider, merci,

sinon je profite une nouvel fois de ta gentillesse pour un petit modif sur le formulaire de visualisation que tu m'avais aider à faire. en effet dans le détail apparait 2 colonnes, j'aimerais que les 3 ou 4 apparaissent, j'ai modifier ce que je pensais etre cela mais le module de classe m'est inconnue
Je te mets le fichier de base sur lequel sera enregisté les différentes formations

c'est d'ailleur sur le meme fichier que sera enregistré ce qui proviendra du formulaire saisie

encore merci

@+
 

Pièces jointes

Re : désignation de valeur dans une listbox

Bonsoir

Jp,

je viens de trouver comment mettre les informations en jouant sur le tag des cases détails.
Par contre, comment pourrais je régler la largeur des colonnes dans la listbox1

merci encore

Dans la feuille détail la largeur des colonnes est à modifier dans la propriété ColumnWidths de la listbox.

Le classeur est ouvert mais caché Menu fenêtre option afficher.

Si on a le message "la feuille n'existe pas", il faut mettre dans le corps de la procédure qui désire ouvrir l'onglet, le code "ouverturecla" ce qui permet de remettre à jour le contenu des variables.


JP
 
Dernière édition:
- 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

Retour