OVH Cloud OVH Cloud

Concatener 2 colonnes

16 réponses
Avatar
Peponne31
Bonjour,

Est-il possible dans un ListBox de concatener 2 Colonnes A et C,
de manière à afficher les informations simultanément ?
Merci
Peponne31

6 réponses

1 2
Avatar
Peponne31
Re,

Dans la colonne A, que des chiffres: 0909001, je veux afficher les 7
chiffres dans la ListBox1 colonne Gauche. Dans la colonne C que des lettres:
Me DUCHEMIN que je voudrai afficher dans la colonne de droite de la Lisbox1.
Le code en fichier joint que tu mas envoyé me va très bien. Mais je voudrai
par clic ou bouton sur les chiffres , saisir que la colonne A, soit les
chiffres. Chaque ligne de chiffres correspond à un N° de feuille.xls, se
sont mes devis . Que je voudrais ouvrir, non pas dans un classeur, mais dans
le formulaire qui a créé ses devis pour pouvoir les modifiers.


"Peponne31" a écrit :


Re,

Il me semble que ta réponse voulai dire que je ne pouvais saisir
que les info d'une colonne. Ce que je voudrais essayer de faire c'est
d'avoir les 2 colonnes dans la ListBox, colonne gauche N° colonne droite Nom
et de ne saisir que le N° de client dans la colonne de gauche. Et par simple
clic sur le N° souhaité ou sur le bouton valider je voulais saisir le devis,
et le réintroduire dans mon formulaire pour pouvoir la modifier. La procédure
pour réintroduire le devis fonctionne, me manque comment relier cette
procédure, au clic ou au bouton sur le N° de client dans la LisBox1. Tous les
codes que vous m'envoyez fonctionnent bien, c'est moi qui ne sai pas les
intégrer.
Amicalement
Peponne31


"michdenis" a écrit :

> | dommage de ne pas avoir les 2 colonnes dans la ListBox
>
> ***Et pourquoi tu ne peux pas avoir 2 colonnes dans ta listbox ?
>
>
>
> "Peponne31" a écrit dans le message de groupe de
> discussion :
> Re
>
> il est dommage de ne pas avoir les 2 colonnes dans la ListBox,
> pour la lisibilité c'étais bien mais si l'on ne peux reporter qu' une seule
> colonne...
> Merci encore et bonne fin de soirée.
> Peponne31
>
>
> "michdenis" a écrit :
>
> > A )
> > Tu peux supprimer la petite procédure
> > Private Sub Valider_Click()
> > Elle ne sert à rien dans ton cas.
> >
> > B ) Si tu ne veux qu'un champ, tu n'as qu'à modifier
> > dans la requête le nom du champ. Tu n'indique que
> > le champ qui t'intéresse. Tu peux aussi modifier aussi la
> > plage de cellule qui affecte la variable Rg en début de
> > procédure mais ce n'est pas obligatoire !
> >
> > C ) Ce bout de code permet d'éviter les doublons dans
> > ta liste si tu en as et de plus, il te sort ton champ en
> > ordre croissant ! Mais il n'est pas essentiel.
> > & vbCrLf & " Group by N°devis, Nom"
> >
> >
> >


Avatar
michdenis
Je ne comprends toujours pas ta demande !

Si tu cherches à extraire le contenu de l'item sélectionné
du listbox pour sélectionner une feuille dans ton classeur

Quelques informations sur comment faire à partir
d'un bouton de commande dans le formulaire.

'-----------------------------------------
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
On Error Resume Next
With Me.ListBox1
'Pour extraire la sélection du listbox lors d'un clic
'Première colonne Deuxième colonne
If .ListIndex <> -1 Then
x = .List(.ListIndex, 0) & " " & .List(.ListIndex, 1)
'si x représente un numéro de feuille dans ton classeur
'Pour saisir ta feuille
Err = 0
Set Sh = Worksheets(x)
If Err <> 0 Then
Err = 0
MsgBox "la feuille " & x & " inexistante dans ce classeur."
else
Sh.Select
End If
End If
End With
End Sub
'-----------------------------------------



"Peponne31" a écrit dans le message de groupe de
discussion :
Re,

Dans la colonne A, que des chiffres: 0909001, je veux afficher les 7
chiffres dans la ListBox1 colonne Gauche. Dans la colonne C que des lettres:
Me DUCHEMIN que je voudrai afficher dans la colonne de droite de la Lisbox1.
Le code en fichier joint que tu mas envoyé me va très bien. Mais je voudrai
par clic ou bouton sur les chiffres , saisir que la colonne A, soit les
chiffres. Chaque ligne de chiffres correspond à un N° de feuille.xls, se
sont mes devis . Que je voudrais ouvrir, non pas dans un classeur, mais dans
le formulaire qui a créé ses devis pour pouvoir les modifiers.


"Peponne31" a écrit :


Re,

Il me semble que ta réponse voulai dire que je ne pouvais saisir
que les info d'une colonne. Ce que je voudrais essayer de faire c'est
d'avoir les 2 colonnes dans la ListBox, colonne gauche N° colonne droite Nom
et de ne saisir que le N° de client dans la colonne de gauche. Et par simple
clic sur le N° souhaité ou sur le bouton valider je voulais saisir le devis,
et le réintroduire dans mon formulaire pour pouvoir la modifier. La procédure
pour réintroduire le devis fonctionne, me manque comment relier cette
procédure, au clic ou au bouton sur le N° de client dans la LisBox1. Tous les
codes que vous m'envoyez fonctionnent bien, c'est moi qui ne sai pas les
intégrer.
Amicalement
Peponne31


"michdenis" a écrit :

> | dommage de ne pas avoir les 2 colonnes dans la ListBox
>
> ***Et pourquoi tu ne peux pas avoir 2 colonnes dans ta listbox ?
>
>
>
> "Peponne31" a écrit dans le message de groupe de
> discussion :
> Re
>
> il est dommage de ne pas avoir les 2 colonnes dans la ListBox,
> pour la lisibilité c'étais bien mais si l'on ne peux reporter qu' une seule
> colonne...
> Merci encore et bonne fin de soirée.
> Peponne31
>
>
> "michdenis" a écrit :
>
> > A )
> > Tu peux supprimer la petite procédure
> > Private Sub Valider_Click()
> > Elle ne sert à rien dans ton cas.
> >
> > B ) Si tu ne veux qu'un champ, tu n'as qu'à modifier
> > dans la requête le nom du champ. Tu n'indique que
> > le champ qui t'intéresse. Tu peux aussi modifier aussi la
> > plage de cellule qui affecte la variable Rg en début de
> > procédure mais ce n'est pas obligatoire !
> >
> > C ) Ce bout de code permet d'éviter les doublons dans
> > ta liste si tu en as et de plus, il te sort ton champ en
> > ordre croissant ! Mais il n'est pas essentiel.
> > & vbCrLf & " Group by N°devis, Nom"
> >
> >
> >


Avatar
Peponne31
Bonjour Michdenis,


items sur 2 colonnes

ligne 1 │ 0908001 │ Me DUCHEMIN │
ligne 2 │ 0908002 │ Société SOPA │

par un clic sur une de ces lignes, peut-on ouvrir ce qui suit:

'======================================= Private Sub Valider_Click()
Dim Chemin As String, Ctr As Integer, Plage As Range, c As Range
ActiveSheet.Unprotect
Range("I12").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Value = ActiveCell.Value
Range("date").Select
ActiveCell.Value = ActiveCell.Value
Chemin = "C:CONCEPT Habitatdevis1P"
Ctr = 21
Workbooks.Open Chemin & Fich & ".xls"
Feuille = ActiveSheet.Name
With Workbooks("CONCEPT Habitat.xls").Sheets("Devis1page")
.Range("num_client") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("num_client")
.Range("dnomcli1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dnomcli1")
.Range("numdevis1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("numdevis1")
.Range("frue1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue1")
.Range("frue2") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue2")
.Range("fville") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("fville")
.Range("fcp") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("fcp")
.Range("téléphone") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("téléphone")
.Range("portable") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("portable")
.Range("dremise") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dremise")
.Range("B17") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("B17")
.Range("H4") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H4")
.Range("H5") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H5")
.Range("I51") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("I51")
Set Plage = Workbooks(Fich & ".xls").Sheets(Feuille).Range("A21:A50")
For Each c In Plage
.Range("A" & Ctr) = c.Value
.Range("F" & Ctr) = c.Offset(0, 1)
.Range("G" & Ctr) = c.Offset(0, 2)
.Range("H" & Ctr) = c.Offset(0, 3)
.Range("J" & Ctr) = c.Offset(0, 5)
Ctr = Ctr + 1
Next c
Workbooks(Fich & ".xls").Close False
ActiveSheet.Protect
End With
End Sub
'=============================== ce code va me chercher la feuille enregistrée dans
C:CONCEPT HabitatDevis
et me la recopie dans le formulaire pour modification.
Mais avec le nom à coté du N° la recherche est plus facile.

Merci
Peponne31


"michdenis" a écrit :

Je ne comprends toujours pas ta demande !

Si tu cherches à extraire le contenu de l'item sélectionné
du listbox pour sélectionner une feuille dans ton classeur

Quelques informations sur comment faire à partir
d'un bouton de commande dans le formulaire.

'-----------------------------------------
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
On Error Resume Next
With Me.ListBox1
'Pour extraire la sélection du listbox lors d'un clic
'Première colonne Deuxième colonne
If .ListIndex <> -1 Then
x = .List(.ListIndex, 0) & " " & .List(.ListIndex, 1)
'si x représente un numéro de feuille dans ton classeur
'Pour saisir ta feuille
Err = 0
Set Sh = Worksheets(x)
If Err <> 0 Then
Err = 0
MsgBox "la feuille " & x & " inexistante dans ce classeur."
else
Sh.Select
End If
End If
End With
End Sub
'-----------------------------------------



"Peponne31" a écrit dans le message de groupe de
discussion :
Re,

Dans la colonne A, que des chiffres: 0909001, je veux afficher les 7
chiffres dans la ListBox1 colonne Gauche. Dans la colonne C que des lettres:
Me DUCHEMIN que je voudrai afficher dans la colonne de droite de la Lisbox1.
Le code en fichier joint que tu mas envoyé me va très bien. Mais je voudrai
par clic ou bouton sur les chiffres , saisir que la colonne A, soit les
chiffres. Chaque ligne de chiffres correspond à un N° de feuille.xls, se
sont mes devis . Que je voudrais ouvrir, non pas dans un classeur, mais dans
le formulaire qui a créé ses devis pour pouvoir les modifiers.


"Peponne31" a écrit :

>
> Re,
>
> Il me semble que ta réponse voulai dire que je ne pouvais saisir
> que les info d'une colonne. Ce que je voudrais essayer de faire c'est
> d'avoir les 2 colonnes dans la ListBox, colonne gauche N° colonne droite Nom
> et de ne saisir que le N° de client dans la colonne de gauche. Et par simple
> clic sur le N° souhaité ou sur le bouton valider je voulais saisir le devis,
> et le réintroduire dans mon formulaire pour pouvoir la modifier. La procédure
> pour réintroduire le devis fonctionne, me manque comment relier cette
> procédure, au clic ou au bouton sur le N° de client dans la LisBox1. Tous les
> codes que vous m'envoyez fonctionnent bien, c'est moi qui ne sai pas les
> intégrer.
> Amicalement
> Peponne31
>
>
> "michdenis" a écrit :
>
> > | dommage de ne pas avoir les 2 colonnes dans la ListBox
> >
> > ***Et pourquoi tu ne peux pas avoir 2 colonnes dans ta listbox ?
> >
> >
> >
> > "Peponne31" a écrit dans le message de groupe de
> > discussion :
> > Re
> >
> > il est dommage de ne pas avoir les 2 colonnes dans la ListBox,
> > pour la lisibilité c'étais bien mais si l'on ne peux reporter qu' une seule
> > colonne...
> > Merci encore et bonne fin de soirée.
> > Peponne31
> >
> >
> > "michdenis" a écrit :
> >
> > > A )
> > > Tu peux supprimer la petite procédure
> > > Private Sub Valider_Click()
> > > Elle ne sert à rien dans ton cas.
> > >
> > > B ) Si tu ne veux qu'un champ, tu n'as qu'à modifier
> > > dans la requête le nom du champ. Tu n'indique que
> > > le champ qui t'intéresse. Tu peux aussi modifier aussi la
> > > plage de cellule qui affecte la variable Rg en début de
> > > procédure mais ce n'est pas obligatoire !
> > >
> > > C ) Ce bout de code permet d'éviter les doublons dans
> > > ta liste si tu en as et de plus, il te sort ton champ en
> > > ordre croissant ! Mais il n'est pas essentiel.
> > > & vbCrLf & " Group by N°devis, Nom"
> > >
> > >
> > >


Avatar
michdenis
Ce qui suit est seulement un exemple

'Je suppose que dans ladite feuille où tu recherches
'Tu as un tableau de données conventionnelles où
'tu peux faire une recherche sur le nom ayant
'étiquette de colonne

'---------------------------------------------------
Private Sub test()
Dim Chemin As String
Dim NomDuFichier As String
Dim NomFeuille As String
Dim Critere As String

Chemin = "C:CONCEPT Habitatdevis"
NomDuFichier = "CONCEPT Habitat.xls"

'Je suppose que les valeurs du listBox
'contient ces valeurs ...
With Me.ListBox1
If .ListIndex <> -1 Then
'Le nom de l'individu
Critere = .List(.ListIndex, 0)
'Le nom de la feuille
NomFeuille = .List(.ListIndex, 1)
Else
MsgBox "Aucune sélection faite dans le listbox."
End If
End With

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & NomDuFichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""

'Dans la ligne suivant, j'ai supposé que l'étiquette
'de colonne où tu recherches les données sur le personnage
'était "Contact" si autre, il faudra modifier
'J'ai aussi supposé que tes données débutait en ligne1
'de la feuille, la première ligne réservée aux étiquettes
requete = "SELECT * FROM [" & NomFeuille & "$]" & vbCrLf & _
" Where Contact=" & "'" & Critere & "'"

Rst.Open requete, Conn, adOpenStatic, adLockReadOnly

'tes données pertinentes se retrouvent dans un recordset
'Ce n'est qu'un petit exemple pour boucler sur la valeur
'de chaque champ du recordset
For a = 0 To Rst.Fields.Count - 1
MsgBox Rst.Fields(a).Name & " = " & Rst(a).Value
Next
Rst.Close: Conn.Close

End Sub
'---------------------------------------------------



"Peponne31" a écrit dans le message de groupe de
discussion :

Bonjour Michdenis,


items sur 2 colonnes

ligne 1 │ 0908001 │ Me DUCHEMIN │
ligne 2 │ 0908002 │ Société SOPA │

par un clic sur une de ces lignes, peut-on ouvrir ce qui suit:

'======================================= Private Sub Valider_Click()
Dim Chemin As String, Ctr As Integer, Plage As Range, c As Range
ActiveSheet.Unprotect
Range("I12").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Value = ActiveCell.Value
Range("date").Select
ActiveCell.Value = ActiveCell.Value
Chemin = "C:CONCEPT Habitatdevis1P"
Ctr = 21
Workbooks.Open Chemin & Fich & ".xls"
Feuille = ActiveSheet.Name
With Workbooks("CONCEPT Habitat.xls").Sheets("Devis1page")
.Range("num_client") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("num_client")
.Range("dnomcli1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dnomcli1")
.Range("numdevis1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("numdevis1")
.Range("frue1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue1")
.Range("frue2") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue2")
.Range("fville") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("fville")
.Range("fcp") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("fcp")
.Range("téléphone") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("téléphone")
.Range("portable") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("portable")
.Range("dremise") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dremise")
.Range("B17") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("B17")
.Range("H4") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H4")
.Range("H5") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H5")
.Range("I51") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("I51")
Set Plage = Workbooks(Fich & ".xls").Sheets(Feuille).Range("A21:A50")
For Each c In Plage
.Range("A" & Ctr) = c.Value
.Range("F" & Ctr) = c.Offset(0, 1)
.Range("G" & Ctr) = c.Offset(0, 2)
.Range("H" & Ctr) = c.Offset(0, 3)
.Range("J" & Ctr) = c.Offset(0, 5)
Ctr = Ctr + 1
Next c
Workbooks(Fich & ".xls").Close False
ActiveSheet.Protect
End With
End Sub
'=============================== ce code va me chercher la feuille enregistrée dans
C:CONCEPT HabitatDevis
et me la recopie dans le formulaire pour modification.
Mais avec le nom à coté du N° la recherche est plus facile.

Merci
Peponne31


"michdenis" a écrit :

Je ne comprends toujours pas ta demande !

Si tu cherches à extraire le contenu de l'item sélectionné
du listbox pour sélectionner une feuille dans ton classeur

Quelques informations sur comment faire à partir
d'un bouton de commande dans le formulaire.

'-----------------------------------------
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
On Error Resume Next
With Me.ListBox1
'Pour extraire la sélection du listbox lors d'un clic
'Première colonne Deuxième colonne
If .ListIndex <> -1 Then
x = .List(.ListIndex, 0) & " " & .List(.ListIndex, 1)
'si x représente un numéro de feuille dans ton classeur
'Pour saisir ta feuille
Err = 0
Set Sh = Worksheets(x)
If Err <> 0 Then
Err = 0
MsgBox "la feuille " & x & " inexistante dans ce classeur."
else
Sh.Select
End If
End If
End With
End Sub
'-----------------------------------------



"Peponne31" a écrit dans le message de groupe de
discussion :
Re,

Dans la colonne A, que des chiffres: 0909001, je veux afficher les 7
chiffres dans la ListBox1 colonne Gauche. Dans la colonne C que des lettres:
Me DUCHEMIN que je voudrai afficher dans la colonne de droite de la Lisbox1.
Le code en fichier joint que tu mas envoyé me va très bien. Mais je voudrai
par clic ou bouton sur les chiffres , saisir que la colonne A, soit les
chiffres. Chaque ligne de chiffres correspond à un N° de feuille.xls, se
sont mes devis . Que je voudrais ouvrir, non pas dans un classeur, mais dans
le formulaire qui a créé ses devis pour pouvoir les modifiers.


"Peponne31" a écrit :

>
> Re,
>
> Il me semble que ta réponse voulai dire que je ne pouvais saisir
> que les info d'une colonne. Ce que je voudrais essayer de faire c'est
> d'avoir les 2 colonnes dans la ListBox, colonne gauche N° colonne droite Nom
> et de ne saisir que le N° de client dans la colonne de gauche. Et par simple
> clic sur le N° souhaité ou sur le bouton valider je voulais saisir le devis,
> et le réintroduire dans mon formulaire pour pouvoir la modifier. La procédure
> pour réintroduire le devis fonctionne, me manque comment relier cette
> procédure, au clic ou au bouton sur le N° de client dans la LisBox1. Tous les
> codes que vous m'envoyez fonctionnent bien, c'est moi qui ne sai pas les
> intégrer.
> Amicalement
> Peponne31
>
>
> "michdenis" a écrit :
>
> > | dommage de ne pas avoir les 2 colonnes dans la ListBox
> >
> > ***Et pourquoi tu ne peux pas avoir 2 colonnes dans ta listbox ?
> >
> >
> >
> > "Peponne31" a écrit dans le message de groupe
> > de
> > discussion :
> > Re
> >
> > il est dommage de ne pas avoir les 2 colonnes dans la ListBox,
> > pour la lisibilité c'étais bien mais si l'on ne peux reporter qu' une seule
> > colonne...
> > Merci encore et bonne fin de soirée.
> > Peponne31
> >
> >
> > "michdenis" a écrit :
> >
> > > A )
> > > Tu peux supprimer la petite procédure
> > > Private Sub Valider_Click()
> > > Elle ne sert à rien dans ton cas.
> > >
> > > B ) Si tu ne veux qu'un champ, tu n'as qu'à modifier
> > > dans la requête le nom du champ. Tu n'indique que
> > > le champ qui t'intéresse. Tu peux aussi modifier aussi la
> > > plage de cellule qui affecte la variable Rg en début de
> > > procédure mais ce n'est pas obligatoire !
> > >
> > > C ) Ce bout de code permet d'éviter les doublons dans
> > > ta liste si tu en as et de plus, il te sort ton champ en
> > > ordre croissant ! Mais il n'est pas essentiel.
> > > & vbCrLf & " Group by N°devis, Nom"
> > >
> > >
> > >


Avatar
Peponne31
Bonsoir Michdenis,

La feuille ou je range mes données est une feuille
du classeur actif qui se nomme (JournalDevis) et mes données
demmarrent en A7.
En A6 j'ai N°Client en étiquette de colonne
Cela peut-il poser un problème ?
Cordialement
Peponne31

"Peponne31" a écrit :


Bonjour Michdenis,


items sur 2 colonnes

ligne 1 │ 0908001 │ Me DUCHEMIN │
ligne 2 │ 0908002 │ Société SOPA │

par un clic sur une de ces lignes, peut-on ouvrir ce qui suit:

'======================================= > Private Sub Valider_Click()
Dim Chemin As String, Ctr As Integer, Plage As Range, c As Range
ActiveSheet.Unprotect
Range("I12").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Value = ActiveCell.Value
Range("date").Select
ActiveCell.Value = ActiveCell.Value
Chemin = "C:CONCEPT Habitatdevis1P"
Ctr = 21
Workbooks.Open Chemin & Fich & ".xls"
Feuille = ActiveSheet.Name
With Workbooks("CONCEPT Habitat.xls").Sheets("Devis1page")
.Range("num_client") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("num_client")
.Range("dnomcli1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dnomcli1")
.Range("numdevis1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("numdevis1")
.Range("frue1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue1")
.Range("frue2") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue2")
.Range("fville") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("fville")
.Range("fcp") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("fcp")
.Range("téléphone") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("téléphone")
.Range("portable") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("portable")
.Range("dremise") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dremise")
.Range("B17") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("B17")
.Range("H4") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H4")
.Range("H5") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H5")
.Range("I51") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("I51")
Set Plage = Workbooks(Fich & ".xls").Sheets(Feuille).Range("A21:A50")
For Each c In Plage
.Range("A" & Ctr) = c.Value
.Range("F" & Ctr) = c.Offset(0, 1)
.Range("G" & Ctr) = c.Offset(0, 2)
.Range("H" & Ctr) = c.Offset(0, 3)
.Range("J" & Ctr) = c.Offset(0, 5)
Ctr = Ctr + 1
Next c
Workbooks(Fich & ".xls").Close False
ActiveSheet.Protect
End With
End Sub
'=============================== > ce code va me chercher la feuille enregistrée dans
C:CONCEPT HabitatDevis
et me la recopie dans le formulaire pour modification.
Mais avec le nom à coté du N° la recherche est plus facile.

Merci
Peponne31


"michdenis" a écrit :

> Je ne comprends toujours pas ta demande !
>
> Si tu cherches à extraire le contenu de l'item sélectionné
> du listbox pour sélectionner une feuille dans ton classeur
>
> Quelques informations sur comment faire à partir
> d'un bouton de commande dans le formulaire.
>
> '-----------------------------------------
> Private Sub CommandButton1_Click()
> Dim Sh As Worksheet
> On Error Resume Next
> With Me.ListBox1
> 'Pour extraire la sélection du listbox lors d'un clic
> 'Première colonne Deuxième colonne
> If .ListIndex <> -1 Then
> x = .List(.ListIndex, 0) & " " & .List(.ListIndex, 1)
> 'si x représente un numéro de feuille dans ton classeur
> 'Pour saisir ta feuille
> Err = 0
> Set Sh = Worksheets(x)
> If Err <> 0 Then
> Err = 0
> MsgBox "la feuille " & x & " inexistante dans ce classeur."
> else
> Sh.Select
> End If
> End If
> End With
> End Sub
> '-----------------------------------------
>
>
>
> "Peponne31" a écrit dans le message de groupe de
> discussion :
> Re,
>
> Dans la colonne A, que des chiffres: 0909001, je veux afficher les 7
> chiffres dans la ListBox1 colonne Gauche. Dans la colonne C que des lettres:
> Me DUCHEMIN que je voudrai afficher dans la colonne de droite de la Lisbox1.
> Le code en fichier joint que tu mas envoyé me va très bien. Mais je voudrai
> par clic ou bouton sur les chiffres , saisir que la colonne A, soit les
> chiffres. Chaque ligne de chiffres correspond à un N° de feuille.xls, se
> sont mes devis . Que je voudrais ouvrir, non pas dans un classeur, mais dans
> le formulaire qui a créé ses devis pour pouvoir les modifiers.
>
>
> "Peponne31" a écrit :
>
> >
> > Re,
> >
> > Il me semble que ta réponse voulai dire que je ne pouvais saisir
> > que les info d'une colonne. Ce que je voudrais essayer de faire c'est
> > d'avoir les 2 colonnes dans la ListBox, colonne gauche N° colonne droite Nom
> > et de ne saisir que le N° de client dans la colonne de gauche. Et par simple
> > clic sur le N° souhaité ou sur le bouton valider je voulais saisir le devis,
> > et le réintroduire dans mon formulaire pour pouvoir la modifier. La procédure
> > pour réintroduire le devis fonctionne, me manque comment relier cette
> > procédure, au clic ou au bouton sur le N° de client dans la LisBox1. Tous les
> > codes que vous m'envoyez fonctionnent bien, c'est moi qui ne sai pas les
> > intégrer.
> > Amicalement
> > Peponne31
> >
> >
> > "michdenis" a écrit :
> >
> > > | dommage de ne pas avoir les 2 colonnes dans la ListBox
> > >
> > > ***Et pourquoi tu ne peux pas avoir 2 colonnes dans ta listbox ?
> > >
> > >
> > >
> > > "Peponne31" a écrit dans le message de groupe de
> > > discussion :
> > > Re
> > >
> > > il est dommage de ne pas avoir les 2 colonnes dans la ListBox,
> > > pour la lisibilité c'étais bien mais si l'on ne peux reporter qu' une seule
> > > colonne...
> > > Merci encore et bonne fin de soirée.
> > > Peponne31
> > >
> > >
> > > "michdenis" a écrit :
> > >
> > > > A )
> > > > Tu peux supprimer la petite procédure
> > > > Private Sub Valider_Click()
> > > > Elle ne sert à rien dans ton cas.
> > > >
> > > > B ) Si tu ne veux qu'un champ, tu n'as qu'à modifier
> > > > dans la requête le nom du champ. Tu n'indique que
> > > > le champ qui t'intéresse. Tu peux aussi modifier aussi la
> > > > plage de cellule qui affecte la variable Rg en début de
> > > > procédure mais ce n'est pas obligatoire !
> > > >
> > > > C ) Ce bout de code permet d'éviter les doublons dans
> > > > ta liste si tu en as et de plus, il te sort ton champ en
> > > > ordre croissant ! Mais il n'est pas essentiel.
> > > > & vbCrLf & " Group by N°devis, Nom"
> > > >
> > > >
> > > >


Avatar
michdenis
C'est ma dernière intervention sur ce fil :

J'ai supposé que ta page sur la feuille "JournalDevis"
débutait de A6:Gx -> à adapter

J'ai supposé que le numéro du client était une valeur
numérique et ta colonne NoClient dans ta feuille
au format standard. sinon tu adaptes ceci :
" Where [N°Client]=" & Critere
Tu as des exemples comment mettre critère entre "'" & critere & "'"

Il y a peut être d'autres petites modifications... tu devrais
pouvoir t'en sortir !

'--------------------------------------------
Private Sub test()
Dim Rg As Range
Dim NomFeuille As String
Dim Critere As Long

NomFeuille = "JournalDevis"

With Worksheets("NomFeuille")
Set Rg = .Range("A6:G" & .Range("A65536").End(xlUp).Row)
End With

With Me.ListBox1
If .ListIndex <> -1 Then
'Numéro du client-> valeur numérique
Critere = .List(.ListIndex, 0)
Else
MsgBox "Aucune sélection faite dans le listbox."
Exit Sub
End If
End With

Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"""

requete = "SELECT * FROM [" & NomFeuille & "$" & _
Rg.Address(0, 0) & "]" & vbCrLf & _
" Where [N°Client]=" & Critere

Rst.Open requete, Conn, adOpenStatic, adLockReadOnly

For a = 0 To Rst.Fields.Count - 1
'affecte la valeur à tes textbox
MsgBox Rst.Fields(a).Name & " = " & Rst(a).Value
Next
Rst.Close: Conn.Close

End Sub

Sub dsd()
With Me.ListBox1
If .ListIndex <> -1 Then
'Numéro du client
Critere = .List(.ListIndex, 0)
Else
MsgBox "Aucune sélection faite dans le listbox."
Exit Sub
End If
End With

End Sub
'--------------------------------------------



"Peponne31" a écrit dans le message de groupe de
discussion :
Bonsoir Michdenis,

La feuille ou je range mes données est une feuille
du classeur actif qui se nomme (JournalDevis) et mes données
demmarrent en A7.
En A6 j'ai N°Client en étiquette de colonne
Cela peut-il poser un problème ?
Cordialement
Peponne31

"Peponne31" a écrit :


Bonjour Michdenis,


items sur 2 colonnes

ligne 1 │ 0908001 │ Me DUCHEMIN │
ligne 2 │ 0908002 │ Société SOPA │

par un clic sur une de ces lignes, peut-on ouvrir ce qui suit:

'======================================= > Private Sub Valider_Click()
Dim Chemin As String, Ctr As Integer, Plage As Range, c As Range
ActiveSheet.Unprotect
Range("I12").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveCell.Value = ActiveCell.Value
Range("date").Select
ActiveCell.Value = ActiveCell.Value
Chemin = "C:CONCEPT Habitatdevis1P"
Ctr = 21
Workbooks.Open Chemin & Fich & ".xls"
Feuille = ActiveSheet.Name
With Workbooks("CONCEPT Habitat.xls").Sheets("Devis1page")
.Range("num_client") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("num_client")
.Range("dnomcli1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dnomcli1")
.Range("numdevis1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("numdevis1")
.Range("frue1") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue1")
.Range("frue2") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("frue2")
.Range("fville") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("fville")
.Range("fcp") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("fcp")
.Range("téléphone") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("téléphone")
.Range("portable") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("portable")
.Range("dremise") = Workbooks(Fich &
".xls").Sheets(Feuille).Range("dremise")
.Range("B17") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("B17")
.Range("H4") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H4")
.Range("H5") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("H5")
.Range("I51") = Workbooks(Fich & ".xls").Sheets(Feuille).Range("I51")
Set Plage = Workbooks(Fich & ".xls").Sheets(Feuille).Range("A21:A50")
For Each c In Plage
.Range("A" & Ctr) = c.Value
.Range("F" & Ctr) = c.Offset(0, 1)
.Range("G" & Ctr) = c.Offset(0, 2)
.Range("H" & Ctr) = c.Offset(0, 3)
.Range("J" & Ctr) = c.Offset(0, 5)
Ctr = Ctr + 1
Next c
Workbooks(Fich & ".xls").Close False
ActiveSheet.Protect
End With
End Sub
'=============================== > ce code va me chercher la feuille enregistrée dans
C:CONCEPT HabitatDevis
et me la recopie dans le formulaire pour modification.
Mais avec le nom à coté du N° la recherche est plus facile.

Merci
Peponne31


"michdenis" a écrit :

> Je ne comprends toujours pas ta demande !
>
> Si tu cherches à extraire le contenu de l'item sélectionné
> du listbox pour sélectionner une feuille dans ton classeur
>
> Quelques informations sur comment faire à partir
> d'un bouton de commande dans le formulaire.
>
> '-----------------------------------------
> Private Sub CommandButton1_Click()
> Dim Sh As Worksheet
> On Error Resume Next
> With Me.ListBox1
> 'Pour extraire la sélection du listbox lors d'un clic
> 'Première colonne Deuxième colonne
> If .ListIndex <> -1 Then
> x = .List(.ListIndex, 0) & " " & .List(.ListIndex, 1)
> 'si x représente un numéro de feuille dans ton classeur
> 'Pour saisir ta feuille
> Err = 0
> Set Sh = Worksheets(x)
> If Err <> 0 Then
> Err = 0
> MsgBox "la feuille " & x & " inexistante dans ce classeur."
> else
> Sh.Select
> End If
> End If
> End With
> End Sub
> '-----------------------------------------
>
>
>
> "Peponne31" a écrit dans le message de groupe de
> discussion :
> Re,
>
> Dans la colonne A, que des chiffres: 0909001, je veux afficher les 7
> chiffres dans la ListBox1 colonne Gauche. Dans la colonne C que des lettres:
> Me DUCHEMIN que je voudrai afficher dans la colonne de droite de la Lisbox1.
> Le code en fichier joint que tu mas envoyé me va très bien. Mais je voudrai
> par clic ou bouton sur les chiffres , saisir que la colonne A, soit les
> chiffres. Chaque ligne de chiffres correspond à un N° de feuille.xls, se
> sont mes devis . Que je voudrais ouvrir, non pas dans un classeur, mais dans
> le formulaire qui a créé ses devis pour pouvoir les modifiers.
>
>
> "Peponne31" a écrit :
>
> >
> > Re,
> >
> > Il me semble que ta réponse voulai dire que je ne pouvais saisir
> > que les info d'une colonne. Ce que je voudrais essayer de faire c'est
> > d'avoir les 2 colonnes dans la ListBox, colonne gauche N° colonne droite Nom
> > et de ne saisir que le N° de client dans la colonne de gauche. Et par simple
> > clic sur le N° souhaité ou sur le bouton valider je voulais saisir le devis,
> > et le réintroduire dans mon formulaire pour pouvoir la modifier. La procédure
> > pour réintroduire le devis fonctionne, me manque comment relier cette
> > procédure, au clic ou au bouton sur le N° de client dans la LisBox1. Tous les
> > codes que vous m'envoyez fonctionnent bien, c'est moi qui ne sai pas les
> > intégrer.
> > Amicalement
> > Peponne31
> >
> >
> > "michdenis" a écrit :
> >
> > > | dommage de ne pas avoir les 2 colonnes dans la ListBox
> > >
> > > ***Et pourquoi tu ne peux pas avoir 2 colonnes dans ta listbox ?
> > >
> > >
> > >
> > > "Peponne31" a écrit dans le message de
> > > groupe de
> > > discussion :
> > > Re
> > >
> > > il est dommage de ne pas avoir les 2 colonnes dans la ListBox,
> > > pour la lisibilité c'étais bien mais si l'on ne peux reporter qu' une seule
> > > colonne...
> > > Merci encore et bonne fin de soirée.
> > > Peponne31
> > >
> > >
> > > "michdenis" a écrit :
> > >
> > > > A )
> > > > Tu peux supprimer la petite procédure
> > > > Private Sub Valider_Click()
> > > > Elle ne sert à rien dans ton cas.
> > > >
> > > > B ) Si tu ne veux qu'un champ, tu n'as qu'à modifier
> > > > dans la requête le nom du champ. Tu n'indique que
> > > > le champ qui t'intéresse. Tu peux aussi modifier aussi la
> > > > plage de cellule qui affecte la variable Rg en début de
> > > > procédure mais ce n'est pas obligatoire !
> > > >
> > > > C ) Ce bout de code permet d'éviter les doublons dans
> > > > ta liste si tu en as et de plus, il te sort ton champ en
> > > > ordre croissant ! Mais il n'est pas essentiel.
> > > > & vbCrLf & " Group by N°devis, Nom"
> > > >
> > > >
> > > >


1 2