Insertion de plusieurs mots dans une même cellule

Le
Apitos
Bonjour à tous,

J'aimerais insérer plusieurs mots séparés 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ée << Destination >> pour les valeurs à insérer=
dans la colonne D et une autre nommée << Motif >> pour les valeurs à i=
nsérer dans la colonne D.

Si une fois dans le formulaire, le mot (une destination ou un motif) à in=
sérer est inexistant, alors un champ TextBox est là 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ême temps l'ajouter dans les plages nommées dans Fe=
uil2.

Merci d'avance.


http://www.cjoint.com/c/FAiu70K3vIe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26383545
Bonjour,

Pour insérer ces mots :

Range("C1") = Range("D1") & " + " & Range("D7") & " + " & Range("D8")

Ai-je mal compris?
Apitos
Le #26383544
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.
Apitos
Le #26383583
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
MichD
Le #26383642
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
Le #26383687
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.
MichD
Le #26383708
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
Le #26383772
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
Apitos
Le #26383773
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
'---------------------------------------------------
Publicité
Poster une réponse
Anonyme