J'aimerais ins=E9rer plusieurs mots s=E9par=E9s par le signe << + >> dans l=
es cellules des colonnes C et D depuis un formulaire.
Les mots seront choisis depuis une liste dans un UserForm.
J'en ai une plage nomm=E9e << Destination >> pour les valeurs =E0 ins=E9rer=
dans la colonne D et une autre nomm=E9e << Motif >> pour les valeurs =E0 i=
ns=E9rer dans la colonne D.
Si une fois dans le formulaire, le mot (une destination ou un motif) =E0 in=
s=E9rer est inexistant, alors un champ TextBox est l=E0 pour me permettre d=
e saisir un mot (ou une phrase) pour l'ajouter dans la liste convenable dan=
s la ListBox et en m=EAme temps l'ajouter dans les plages nomm=E9es dans Fe=
uil2.
Non, les D1...Dx représentent des destinations (noms de villes)
les M1...Mx représentent le motif de la mission (Relève dérangement, Transport personnels, Transport Matériels ....)
Le formulaire joint avec l'exemple est une idée qui venue dans la tète. Peut être qu'il y aura d'autres meilleures idées que cela. Je devrais renseigner les colonnes C et D avant d'envoyer les enregistremen ts choisies pour un publipostage.
Bonjoue MichD,
Non, les D1...Dx représentent des destinations (noms de villes)
les M1...Mx représentent le motif de la mission (Relève dérangement, Transport personnels, Transport Matériels ....)
Le formulaire joint avec l'exemple est une idée qui venue dans la tète. Peut être qu'il y aura d'autres meilleures idées que cela.
Je devrais renseigner les colonnes C et D avant d'envoyer les enregistremen ts choisies pour un publipostage.
Non, les D1...Dx représentent des destinations (noms de villes)
les M1...Mx représentent le motif de la mission (Relève dérangement, Transport personnels, Transport Matériels ....)
Le formulaire joint avec l'exemple est une idée qui venue dans la tète. Peut être qu'il y aura d'autres meilleures idées que cela. Je devrais renseigner les colonnes C et D avant d'envoyer les enregistremen ts choisies pour un publipostage.
Apitos
Bonjour,
Voila un nouvelle version ou j'ai essayé d'utiliser le même formulaire pour renseigner les colonne C et D.
Si un double clique est détecté sur les deux colonne, le formulaire est affiché et la listeBox est remplit selon la colonne dans laquelle on a c liqué :
- Si clique dans la colonne C, ListBox1.Rowsource=[Destination].Value
- Si clique dans la colonne D, ListBox1.Rowsource=[Motif].Value
Mais ça me génère une erreur sur ces deux lignes !
http://www.cjoint.com/c/FAjjLlpp0SL
Bonjour,
Voila un nouvelle version ou j'ai essayé d'utiliser le même formulaire pour renseigner les colonne C et D.
Si un double clique est détecté sur les deux colonne, le formulaire est affiché et la listeBox est remplit selon la colonne dans laquelle on a c liqué :
- Si clique dans la colonne C, ListBox1.Rowsource=[Destination].Value
- Si clique dans la colonne D, ListBox1.Rowsource=[Motif].Value
Mais ça me génère une erreur sur ces deux lignes !
Voila un nouvelle version ou j'ai essayé d'utiliser le même formulaire pour renseigner les colonne C et D.
Si un double clique est détecté sur les deux colonne, le formulaire est affiché et la listeBox est remplit selon la colonne dans laquelle on a c liqué :
- Si clique dans la colonne C, ListBox1.Rowsource=[Destination].Value
- Si clique dans la colonne D, ListBox1.Rowsource=[Motif].Value
Mais ça me génère une erreur sur ces deux lignes !
http://www.cjoint.com/c/FAjjLlpp0SL
MichD
Comme je ne sais vraiment pas ce que tu veux faire, je te suggère cette petite explication.
'-------------------------------------------- Private Sub UserForm_Initialize() If Target.Column = 3 Then ListBox1.RowSource = [Destination].Value ElseIf Target.Column = 4 Then ListBox1.RowSource = [Motif].Value End If End Sub
'--------------------------------------------
A ) Cette procédure ne peut pas fonctionner car tu utilises une variable "Objet" de type "Range" que tu n'as pas définie. Dans les différentes procédures événementielles d'Excel à titre d'exemple : rivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean), Observe dans la ligne de déclaration le paramètre "Target" est défini comme étant un "Range".
Voici une manière de procéder pour charger un contrôle ListBox dans un formulaire : '--------------------------------------------- Private Sub UserForm_Initialize() Call Charger_ListBox End Sub '---------------------------------------------
Sub Charger_ListBox() Dim NomFeuille As String Dim Adr As String
With [Destination] Adr = .Address NomFeuille = .Parent.Name 'La propriété RowSource fait référence à l'adresse 'de la plage de cellules UserForm1.ListBox1.RowSource = NomFeuille & "!" & Adr End With End Sub '---------------------------------------------
Tu peux aussi utiliser la propriété "List" pour charger le contrôle Listbox
Exemple :
Le ListBox contient un tableau (array à une dimension de base 0) Par défaut, lorsqu'un tableau a seulement une dimension, cela fait référence à des valeurs en ligne. Comme ce que tu veux obtenir est un affichage en colonne, on doit utiliser la fonction "Transpose". '----------------------------- Sub Charger_ListBox() UserForm1.ListBox1.List = Application.Transpose([Destination].Value) End Sub '-----------------------------
Comme je ne sais vraiment pas ce que tu veux faire, je te suggère cette
petite explication.
'--------------------------------------------
Private Sub UserForm_Initialize()
If Target.Column = 3 Then
ListBox1.RowSource = [Destination].Value
ElseIf Target.Column = 4 Then
ListBox1.RowSource = [Motif].Value
End If
End Sub
'--------------------------------------------
A ) Cette procédure ne peut pas fonctionner car tu utilises une variable
"Objet" de type "Range" que tu n'as pas définie. Dans les différentes
procédures événementielles d'Excel à titre d'exemple :
rivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean), Observe dans la ligne de déclaration le paramètre "Target" est
défini comme étant un "Range".
Voici une manière de procéder pour charger un contrôle ListBox dans un
formulaire :
'---------------------------------------------
Private Sub UserForm_Initialize()
Call Charger_ListBox
End Sub
'---------------------------------------------
Sub Charger_ListBox()
Dim NomFeuille As String
Dim Adr As String
With [Destination]
Adr = .Address
NomFeuille = .Parent.Name
'La propriété RowSource fait référence à l'adresse
'de la plage de cellules
UserForm1.ListBox1.RowSource = NomFeuille & "!" & Adr
End With
End Sub
'---------------------------------------------
Tu peux aussi utiliser la propriété "List" pour charger le
contrôle Listbox
Exemple :
Le ListBox contient un tableau (array à une dimension de base 0)
Par défaut, lorsqu'un tableau a seulement une dimension,
cela fait référence à des valeurs en ligne. Comme ce que tu
veux obtenir est un affichage en colonne, on doit utiliser
la fonction "Transpose".
'-----------------------------
Sub Charger_ListBox()
UserForm1.ListBox1.List = Application.Transpose([Destination].Value)
End Sub
'-----------------------------
Comme je ne sais vraiment pas ce que tu veux faire, je te suggère cette petite explication.
'-------------------------------------------- Private Sub UserForm_Initialize() If Target.Column = 3 Then ListBox1.RowSource = [Destination].Value ElseIf Target.Column = 4 Then ListBox1.RowSource = [Motif].Value End If End Sub
'--------------------------------------------
A ) Cette procédure ne peut pas fonctionner car tu utilises une variable "Objet" de type "Range" que tu n'as pas définie. Dans les différentes procédures événementielles d'Excel à titre d'exemple : rivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean), Observe dans la ligne de déclaration le paramètre "Target" est défini comme étant un "Range".
Voici une manière de procéder pour charger un contrôle ListBox dans un formulaire : '--------------------------------------------- Private Sub UserForm_Initialize() Call Charger_ListBox End Sub '---------------------------------------------
Sub Charger_ListBox() Dim NomFeuille As String Dim Adr As String
With [Destination] Adr = .Address NomFeuille = .Parent.Name 'La propriété RowSource fait référence à l'adresse 'de la plage de cellules UserForm1.ListBox1.RowSource = NomFeuille & "!" & Adr End With End Sub '---------------------------------------------
Tu peux aussi utiliser la propriété "List" pour charger le contrôle Listbox
Exemple :
Le ListBox contient un tableau (array à une dimension de base 0) Par défaut, lorsqu'un tableau a seulement une dimension, cela fait référence à des valeurs en ligne. Comme ce que tu veux obtenir est un affichage en colonne, on doit utiliser la fonction "Transpose". '----------------------------- Sub Charger_ListBox() UserForm1.ListBox1.List = Application.Transpose([Destination].Value) End Sub '-----------------------------
Apitos
Bonjour,
Donc impossible d'appeler le même UserForm pour remplir la ListBox1 selon la colonne cliqué soit pour la colonne C ou la colonne D.
As-tu une autre manière de procéder ? Ou devrais-je faire appeler un se ul formulaire et renseigner depuis toutes les lignes que j'en ai besoin pou r le publipostage ?
Comme je ne sais vraiment pas ce que tu veux faire
Avant de lancer le publipostage des enregistrements voulus, je devrais rens eignés dans la colonne C toutes les destinations ou l'agent en mission de vra intervenir et dans la colonne D le(s) motif(s) de cette mission.
Pour cela, je devrais choisir depuis la plage "Destinations" les villes ou se rendra l'agent et depuis la plage "Motif" les raisons pour lesquels cett e agent est envoyé pour mission.
A la fin, pour choisir les données à envoyer pour un publipostage, je devrais mettre une croix "X" dans la colonne "Etiquette" devant les noms de s agents concernés par cette mission.
J'espère avoir été clair.
Bonjour,
Donc impossible d'appeler le même UserForm pour remplir la ListBox1 selon la colonne cliqué soit pour la colonne C ou la colonne D.
As-tu une autre manière de procéder ? Ou devrais-je faire appeler un se ul formulaire et renseigner depuis toutes les lignes que j'en ai besoin pou r le publipostage ?
Comme je ne sais vraiment pas ce que tu veux faire
Avant de lancer le publipostage des enregistrements voulus, je devrais rens eignés dans la colonne C toutes les destinations ou l'agent en mission de vra intervenir et dans la colonne D le(s) motif(s) de cette mission.
Pour cela, je devrais choisir depuis la plage "Destinations" les villes ou se rendra l'agent et depuis la plage "Motif" les raisons pour lesquels cett e agent est envoyé pour mission.
A la fin, pour choisir les données à envoyer pour un publipostage, je devrais mettre une croix "X" dans la colonne "Etiquette" devant les noms de s agents concernés par cette mission.
Donc impossible d'appeler le même UserForm pour remplir la ListBox1 selon la colonne cliqué soit pour la colonne C ou la colonne D.
As-tu une autre manière de procéder ? Ou devrais-je faire appeler un se ul formulaire et renseigner depuis toutes les lignes que j'en ai besoin pou r le publipostage ?
Comme je ne sais vraiment pas ce que tu veux faire
Avant de lancer le publipostage des enregistrements voulus, je devrais rens eignés dans la colonne C toutes les destinations ou l'agent en mission de vra intervenir et dans la colonne D le(s) motif(s) de cette mission.
Pour cela, je devrais choisir depuis la plage "Destinations" les villes ou se rendra l'agent et depuis la plage "Motif" les raisons pour lesquels cett e agent est envoyé pour mission.
A la fin, pour choisir les données à envoyer pour un publipostage, je devrais mettre une croix "X" dans la colonne "Etiquette" devant les noms de s agents concernés par cette mission.
J'espère avoir été clair.
MichD
Dans le module de la feuille où l'action doit se dérouler, copie ce code. Ce dernier remplit le listbox du formulaire dès que tu cliques dans une cellule de la colonne C ou D de la feuille.
'--------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal _ Target As Range) Dim Col As Range
If Target.Columns.Count = 1 Then If Target.Column = 3 Or Target.Column = 4 Then Set Col = Target.EntireColumn With UserForm1 .ListBox1.List = Range(Col.Cells(2, 1), _ Col.Cells(Rows.Count, 1).End(xlUp)).Value .Show 0 End With End If End If End Sub '---------------------------------------------------
Pour ce qui est du reste, j'ai toujours pas compris. Excel, ce n'est pas de la littérature.
Les plages de cellules ont des adresses et des noms d'onglet de feuille. Si tu veux travailler avec le contenu d'une plage de cellules, tu dois expliquer la manière dont tu veux travailler et surtout définir les conditions qui doivent être remplies et le résultat attendu.
Désolé, il y a peut-être d'autres répondeurs en mesure de t'apporter une solution...
Dans le module de la feuille où l'action doit
se dérouler, copie ce code. Ce dernier remplit
le listbox du formulaire dès que tu cliques dans
une cellule de la colonne C ou D de la feuille.
'---------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal _
Target As Range)
Dim Col As Range
If Target.Columns.Count = 1 Then
If Target.Column = 3 Or Target.Column = 4 Then
Set Col = Target.EntireColumn
With UserForm1
.ListBox1.List = Range(Col.Cells(2, 1), _
Col.Cells(Rows.Count, 1).End(xlUp)).Value
.Show 0
End With
End If
End If
End Sub
'---------------------------------------------------
Pour ce qui est du reste, j'ai toujours pas compris.
Excel, ce n'est pas de la littérature.
Les plages de cellules ont des adresses et des noms
d'onglet de feuille.
Si tu veux travailler avec le contenu d'une plage de
cellules, tu dois expliquer la manière dont tu veux
travailler et surtout définir les conditions qui doivent
être remplies et le résultat attendu.
Désolé, il y a peut-être d'autres répondeurs
en mesure de t'apporter une solution...
Dans le module de la feuille où l'action doit se dérouler, copie ce code. Ce dernier remplit le listbox du formulaire dès que tu cliques dans une cellule de la colonne C ou D de la feuille.
'--------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal _ Target As Range) Dim Col As Range
If Target.Columns.Count = 1 Then If Target.Column = 3 Or Target.Column = 4 Then Set Col = Target.EntireColumn With UserForm1 .ListBox1.List = Range(Col.Cells(2, 1), _ Col.Cells(Rows.Count, 1).End(xlUp)).Value .Show 0 End With End If End If End Sub '---------------------------------------------------
Pour ce qui est du reste, j'ai toujours pas compris. Excel, ce n'est pas de la littérature.
Les plages de cellules ont des adresses et des noms d'onglet de feuille. Si tu veux travailler avec le contenu d'une plage de cellules, tu dois expliquer la manière dont tu veux travailler et surtout définir les conditions qui doivent être remplies et le résultat attendu.
Désolé, il y a peut-être d'autres répondeurs en mesure de t'apporter une solution...
Apitos
Bonjour MichD,
Excel, ce n'est pas de la littérature.
C'est pour cela que je cherche de l'aide pour une proposition d'une idée qui facilite de résoudre mon problème
Bonjour MichD,
Excel, ce n'est pas de la littérature.
C'est pour cela que je cherche de l'aide pour une proposition d'une idée qui facilite de résoudre mon problème
C'est pour cela que je cherche de l'aide pour une proposition d'une idée qui facilite de résoudre mon problème
Apitos
Le code proposé modifié :
'--------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal _ Target As Range) Dim Col As Range
If Target.Columns.Count = 1 Then If Target.Column = 3 Then With UserForm1 .ListBox1.RowSource = "Feuil2" & "!" & [Destination].Addr ess End With ElseIf Target.Column = 4 Then With UserForm1 .ListBox1.RowSource = "Feuil2" & "!" & [Motif].Address End With End If UserForm1.Show '0 End If End Sub '---------------------------------------------------
Le code proposé modifié :
'---------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal _
Target As Range)
Dim Col As Range
If Target.Columns.Count = 1 Then
If Target.Column = 3 Then
With UserForm1
.ListBox1.RowSource = "Feuil2" & "!" & [Destination].Addr ess
End With
ElseIf Target.Column = 4 Then
With UserForm1
.ListBox1.RowSource = "Feuil2" & "!" & [Motif].Address
End With
End If
UserForm1.Show '0
End If
End Sub
'---------------------------------------------------
'--------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal _ Target As Range) Dim Col As Range
If Target.Columns.Count = 1 Then If Target.Column = 3 Then With UserForm1 .ListBox1.RowSource = "Feuil2" & "!" & [Destination].Addr ess End With ElseIf Target.Column = 4 Then With UserForm1 .ListBox1.RowSource = "Feuil2" & "!" & [Motif].Address End With End If UserForm1.Show '0 End If End Sub '---------------------------------------------------