Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

abtony

XLDnaute Impliqué
Bonsoir a tous,

j'ai cherché en vains sur le net et le forum mais je ne trouve pas de réponse a mon problème, donc je solicite votre aide sur ce sujet.

Je souhaite savoir s'il est possible comme l'indique le titre, envoyer le contenu de la listbox en une seule ligne de la feuille excel.

sachant que la listbox a plusieurs colonnes, exemple ( a,b,c,d a,b,c,d et ainsi de suit) vers la feuille

après savoir s'il est possible de récupérer les infos de la feuille, a nouveau dans la listbox ?

Merci d'avance

suivant réponse je joint un petit fichier exemple

mais pas sur que ce soit possible, enfin je sais pas.

Cordialement

Abtony
 

kjin

XLDnaute Barbatruc
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Re,
As tu essayé le fichier précédent ?
Désolé, je ne vois pas le pb...
Tu nous expliques vouloir récupérer la ligne dans la listbox2 alors que les données sont déjà affichée dans la lisbox1 !
Faut-il vraiment insister pour enfin voir poindre les fils qu'on aura réussi à vous tirer du nez !
Bref, expliques nous clairement le fonctionnement de ce machin comme dirait le grand
A+
kjin
 

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Re,
c'est un fichier exemple, avec des données bidon,

sur la listbox1 les donnée d'ouvrages avec désignation, unité, cout moyen, cout total cet,
chaque ligne de la listbox1 correspond a un ouvrage, chaque ligne de la listbox1 aura a partir de la colonne H les sous détail composant cet ouvrage.

quand je sélectionne une ligne en listbox1 la valeur (implantation 4, 6 ou 8 axes devra sélectionner la ligne de la colonne H avec toutes les composantes soit 7 colonnes a partir de la colonne H et par tranches de 7 colonnes mais a l'inverse du code que tu a écris plus haut, pour afficher le résultat en list sur la listbox2.

Je sais et je m'excuse, pas facile a expliqué.

Pour ton fichier précédent oui j'ai essayer, mais les contrôles active x ne fonctionnent pas sous mac.

pour exemple de ton fichier

tu a 3 tranche de 1 A 7 il faut afficher dans la listbox la tranche complète en une ligne de la listbox, la tranche 2 dans une deuxième lignede la listbox, et la tranche 3 dans une 3 eme ligne de la listbox et ainsi de suite. (Chaque tranche ayant une seule ligne H1, AB1)


Édit. Une précision non négligeable et je suis impardonnable, il faut mettre sur la listbox2 en colonnes les tranches(7)
 
Dernière édition:

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir a tous,

ayant été en déplacement toute la semaine, je n'ai pas pu poursuivre mon projet.

Donc la je reviens vers vous pour avoir une aide sur mon projet, j'ai joint mon fichier avec des commentaires pour ilustré mon souhait, j'espère que cette fois ci ce sera plus clair pour vous pour m'aider. Userform et listbox deja créée

Dans le cas contraire je jette l'éponge et je vous importune plus avec ça.

Merci d'avance

Cordialement

Abtony

sur le fichier excel faire afficher les commentaire s'il ne sont pas visible
 

Pièces jointes

  • exemple.xlsm
    101.2 KB · Affichages: 84
  • exemple.xlsm
    101.2 KB · Affichages: 90
  • exemple.xlsm
    101.2 KB · Affichages: 88

kjin

XLDnaute Barbatruc
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir,
Désolé, mais je ne comprends toujours pas le but de la manoeuvre donc avec le peu que j'en retiens...
Code:
Private Sub ListBox1_Change()
With ListBox2
    .Clear
    x = ListBox1.ListIndex + 1
    For i = 9 To 24 Step 5
        .AddItem Cells(x, i)
        For j = 1 To 4
            ListBox2.List(.ListCount - 1, j) = Cells(x, i + j)
        Next
    Next
End With
End Sub
click sur listbox1 pour alimenter listbox2
A+
kjin
 

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonjour Kjin.

C'est exactement ça que je souhaiter avoir, une fois encore je te remercie infiniment pour ton aide.

Je vais pouvoir adapter tes deux codes à mon projet réel.

Bonne journée

Cordialement

Abtony
 

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Re Kjin, le forum,

une dernière chose.

En listbox2, je souhaite pouvoir ajouter des lignes en les remplissant depuis des textbox, et pouvoir modifier des lignes existants.

Merci encore

Abtony

edit: Pour mon information pourquoi 24 alors qu'il y a que 20 colonnes ?
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

salut

Re Kjin, le forum,
edit: Pour mon information pourquoi 24 alors qu'il y a que 20 colonnes ?
et pourquoi pas 29, 34, ... ?
Si... tu veux prévoir plus de 4 articles, essaie
Code:
Private Sub ListBox1_Click()
  Dim Dc As Byte, L As Byte, C As Byte, j As Byte
  Dc = Cells(1, Columns.Count).End(xlToLeft).Column
  L = ListBox1.ListIndex + 1
  With ListBox2
    .ColumnCount = 5
    .Clear
    For C = 1 To Dc Step 5
      .AddItem Cells(L, 8 + C)
      For j = 9 To 12
        .List(.ListCount - 1, j - 8) = Cells(L, j + C)
      Next
  Next
  End With
End Sub

pour l'autre demande simple mais qui demande du boulot, tu devrais trouver des exemples dans ce forum.
 

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir SI...,

Merci pour ton code, je viens de l'essayer et j'avoue que c'est pas mal.

Pour les exemples sur le forum pour l'autre demande j'ai déjà cherché ainsi que sur le net excellabo developpeur.net etc, et je ne trouve rien qui puisse correspondre.

c'est pour cette raison que je poste sur le forum.

Je suis conscient que ça représente du boulot, et je remercie les personnes qui se dévouent a aider les autres et tout ça bénévolement.

Abtony

edit: simple pas tant que ca, car il faut garder le principe d'ajout comme le premier code a Kjin a savoir en ligne

La ligne a partir de la colonne (A) correspond a un ouvrage et a partir de la colonne (I) les articles par tranches de 5 colonnes sur la même ligne On appelle ça les composant d'ouvrage ou sous détails.

D'ailleurs je n'arrive pas a adapté le premier code a Kjin pour que ça sauvegarde le contenu de la listbox2 a partir de la colonne (I)
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir,
et pourquoi pas 29, 34, ... ?
@Si...tu relis le fil, tu constateras rapidement que j'essaie en vain de comprendre de quoi il s'agit !
@abtony, si tu ne fais pas l'effort nécessaire pour expliquer clairement, cette fois c'est moi qui jette l'éponge
...à l'ouverture du formulaire, tu charges la listbox1 oui non avec quoi, combien de colonnes
...tu click sur la listbox1, il se passe quoi ou comment
...tu click sur la listbox2, il se passe quoi ou comment, combien de colonnes
...et les textbox servent à quoi
A+
kjin
 

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir Kjin, SI..., Le forum,

Tout d'abord Kjin je tiens a m'excuser pour ma première demande de ce fil, qui à manqué de réflexion de ma part sur le résultat recherché.

Ne jette pas l'éponge STP, je vais essayer d'être le plus clair possible dans mon explication, et le reste est dans le fichier joint ;).

1/ a l'ouverture de l'userform du fichier joint ca charge la listbox1 avec ce code

VB:
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 7
tableau = ActiveSheet.Range("A1:G" & ActiveSheet.Range("A65536").End(xlUp).Row): ListBox1.List = tableau
End Sub

Donc ça c'est OK pas de soucis.

2/ Un clic sur une ligne de la listbox1, charge la listbox2 avec les articles correspondant a cet ouvrage

ce code est de SI... car on est pas limité par le nombre d'articles a affiché dans les colonnes.
ton code lui s'arreta a 24 et est excellent aussi.

VB:
Private Sub ListBox1_Click()
  Dim Dc As Byte, L As Byte, C As Byte, j As Byte
  Dc = Cells(1, Columns.Count).End(xlToLeft).Column
  L = ListBox1.ListIndex + 1
  With ListBox2
    .ColumnCount = 5
    .Clear
    For C = 1 To Dc Step 5
      .AddItem Cells(L, 8 + C)
      For j = 9 To 12
        .List(.ListCount - 1, j - 8) = Cells(L, j + C)
      Next
  Next
  End With
End Sub

ca c'est OK aussi pas de soucis.

3/ Ce que je souhaite maintenant, c'est de pouvoir ajouter des articles en listbox2, et a la suite des autres en colonnes comme sur la feuille excel.

4/ Et pour finir Pouvoir au besoin modifier un article existant en listbox2 depuis la saisi des textbox de 1 a 5.
(augmentation du prix des matériaux ou autre raison)

Récapitulatif:

Listbox1 OK

plage de A:G et dernière ligne (Correspond a des ouvrages, avec la désignation, unité, prix etc)

Llistbox2 OK

plage de la sélection listbox1, à partir de la colonne (I:M, N:R, S:W, X:AB) tout les articles que compose cet ouvrage en 5 colonnes (Désignation, Unité, Quantité, prix Unitaire, prix total)

Voila j'espère avoir été le plus clair possible, un fichier est joint pour mieux comprendre.

A plus tard

Abtony
 

Pièces jointes

  • exemple.xlsm
    102.9 KB · Affichages: 55
  • exemple.xlsm
    102.9 KB · Affichages: 60
  • exemple.xlsm
    102.9 KB · Affichages: 60

kjin

XLDnaute Barbatruc
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir,
Ouh bé p...étard, ce n'était pas si compliqué, s'agit qu'on parle le même language
Bon je m'énerve un peu qq fois, mais avec l'âge je deviens dure d'oreilles
Je regarde plus tard, ou SiSsi...:) passe par là...
A+
kjin
 

Si...

XLDnaute Barbatruc
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

salut

Bonsoir,
@Si...tu relis le fil, tu constateras rapidement que j'essaie en vain de comprendre de quoi il s'agit !
kjin
la seule chose à laquelle tu n'as fait attention c'est la possibilité d'avoir plus de 10 articles, sinon nos codes se ressemblent comme 2 flocons de neige (par ces temps de froidure);).

@abtony : voilà un exemple de ce que tu peux faire. Si... cela te convient, tu peux intercaler le même ajout pour pouvoir tripatouiller la première liste.
 

Pièces jointes

  • GestionListbox(USF).xlsm
    109.4 KB · Affichages: 67
Dernière édition:

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Bonsoir Kjin, SI..., le forum

On va y arriver, moi aussi l'âge n'arrange pas les choses LOL

SI... c'est cool, très rapide et c'est exactement ça que je souhaite.

Par contre lors d'un ajout après la dernière colonne soit AB on saute d'une colonne, donc lors du rafraîchissement de l'userform cet ajout n'apparait pas en listbox2

Abtony

Edit:

certains ouvrages n'ont pas encore d'articles, ils va falloir que je les créée donc si la colonne (I) est vide l'article est ajouter a la suite du dernier article de la dernière colonne et de la dernière ligne ligne.

Edit 2:

Je viens de voir que sur la listbox2, si on sélectionne la première ligne ok
si on sélectionne la deuxième seul la désignation change dans les textbox, pas le reste

Edit 3:

Lors d'un ajout ou d'une modification les données de la listbox ne vont pas au bon endroit, la cause (trois ouvrages presque identique, Implantation de bâtiment 4 axes, implantations de bâtiment 6 axes, implantation de bâtiment 8 axes; ils ont tous les mêmes articles seules les quantité changes et bien sur le prix) ça facilite pas la chose mais on est prêt du but !

Edit 4:

J'ai réussi a résoudre Edit 2, et Edit 3

Edit 1 je cherche encore !
 
Dernière édition:

abtony

XLDnaute Impliqué
Re : Contenu listbox a plusieurs lignes et colonnes vers feuille en une seule ligne

Re Kjin, SI...,

Voila j'ai décortiquer le code a SI... et j'ai pu résoudre tout les point cité en Edit post précédent.

voiçi le code modifier


VB:
Dim Dl As Long, Dc As Byte
Dim Col As Byte


Private Sub UserForm_Initialize()
  ListBox1.ColumnCount = 7
  Dl = Cells(Rows.Count, 1).End(xlUp).Row
  Dc = Cells(1, Columns.Count).End(xlToLeft).Column
  tableau = Range("A1:G" & Dl)
  ListBox1.List = tableau
End Sub


Private Sub ListBox1_Click()
  Dim L As Byte, C As Byte, j As Byte
  L = ListBox1.ListIndex + 1
  With ListBox2
    .ColumnCount = 5
    .Clear
    For C = 1 To Dc Step 5
      Col = 7 + C
      .AddItem Cells(L, Col)
      
      For j = 8 To 11
        .List(.ListCount - 1, j - 7) = Cells(L, j + C)
      Next
  Next
  End With
  For C = 1 To 5
  Me("T" & C) = " "
  Next
End Sub



Private Sub ListBox2_Click()
  T1 = ListBox2.Value
  For C = 2 To 5
    Me("T" & C) = ListBox2.List(ListBox2.ListIndex, C - 1)
  Next
  CommandButton1.Caption = "Corriger"
End Sub



Private Sub CommandButton1_Click()
  If CommandButton1.Caption = "Corriger" Then
    li = ListBox1.ListIndex + 1
    On Error Resume Next
    Col = Rows(li).Find(ListBox2).Column - 1
  Else
  li = ListBox1.ListIndex + 1
    On Error Resume Next
    Col = Rows(li).Find(ListBox2).Column - 1
  'On Error Resume Next
    'Col = Dc: li = Cells(Rows.Count, Col).End(xlUp).Row + 1
  End If
  For C = 1 To 5
     Cells(li, Col + C) = Me("T" & C)
  Next
  Unload Me: UserForm1.Show
End Sub

Voila tout fonctionne correctement pour l'instant. Même si le dernier code "Corriger, Ajouter" est identique, mais ils remplissent bien leurs fonctions "Corriger ligne listbox2 sélectionné" "Ajouter Ligne listbox1 sélectionné"

Merci infiniment a vous deux, surtout de ne pas avoir jeter l'éponge ;)

Cordialement

Abtony

Bonne nuit
 

Discussions similaires

Réponses
18
Affichages
869

Membres actuellement en ligne

Statistiques des forums

Discussions
312 963
Messages
2 093 996
Membres
105 906
dernier inscrit
aifa