RESOLU - Diviser le contenu d'une cellule pour alimenter une combobox - VB/VBA/VBS - Programmation
Marsh Posté le 03-04-2006 à 08:41:32
Salut Mckoy25 
 
la fonction split va te permettre de faire ce que tu souhaite. 
split(Machaine,chr(10)) 
@+
Marsh Posté le 03-04-2006 à 14:19:19
je suppose que ton idée est la bonne mais je n'arrive pas a l'intégrer a ma macro alors je vais mieux la définir 
 
J'ai dans la colonne E de ma feuille 1 des cellules sur 1 ligne, 2 lignes ou 3 lignes 
 
Toutes les cellules de la colonne E de la feuil1 sont copiés vers la colonne D de ma feuil3 
 
A partir de là, je voudrais diviser les cellules de la colonne D ligne par ligne 
 
Ex :  si en D3 j'ai 1 cellule de 3 lignes je veux que la troisieme ligne se situe en F3, la 2nde en E3 et la premiere en D3 
 
Ensuite je pourrais les mettre dans la meme colonne les trier et supprimer les doublons afin d'alimenter ma combobox 
 
Le bout du code donne :  
 
Sheets("Feuil3" ).Select 
Range("D1", Range("D1" ).End(xlDown)).Select 
Selection.ClearContents 
'Effacer le contenu des cellules de la feuil3 de la colonne D 
 
Sheets("Feuil1" ).Select 
Range("E3", Range("E65536" ).End(xlUp)).Select 
Selection.Copy 
'Copier le contenu des cellules de la colonne E de la feuil 1  
 
Sheets("Feuil3" ).Select 
Range("D1" ).Select 
ActiveSheet.Paste 
'Coller le contenu des cellules dans la colonne D de la feuil3 
 
...ici manque le fait de pouvoir diviser les cellules... 
 
Sheets("Feuil3" ).Select 
Range("E1", Range("E65536" ).End(xlUp)).Select 
Selection.Copy 
'Copier le contenu des cellules de la colonne E de la feuil 3  
 
Sheets("Feuil3" ).Select 
Range("D1" ).End(xlDown).Offset(1, 0).Select 
ActiveSheet.Paste 
'Coller le contenu des cellules dans la colonne D de la feuil3 
 
Sheets("Feuil3" ).Select 
Range("F1", Range("F65536" ).End(xlUp)).Select 
Selection.Copy 
'Copier le contenu des cellules de la colonne F de la feuil 3  
 
Sheets("Feuil3" ).Select 
Range("D1" ).End(xlDown).Offset(1, 0).Select 
ActiveSheet.Paste 
'Coller le contenu des cellules dans la colonne D de la feuil3 
 
Selection.Sort Key1:=Range("D1" ), Order1:=xlAscending, Header:=xlGuess, _ 
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
        DataOption1:=xlSortNormal 
'Tri croissant des cellules de la colonne D 
 
ancienne_valeur = "" 
 
    For i = 1 To Selection.Rows.Count 
        nouvelle_valeur = Cells(i, 4).Value 
            If nouvelle_valeur = ancienne_valeur Then 
            Cells(i, 4).Value = "" 
            End If 
        ancienne_valeur = nouvelle_valeur 
    Next 
'Boucle permettant de supprimer les doublons de la colonne D 
 
Range([D1], [D65536].End(xlUp)).SpecialCells(xlCellTypeBlanks).Delete 
'Suppression des cellules vides de la colonne D 
 
UserForm2.ComboBox1.RowSource = "D1:D" + CStr(Sheets("Feuil3" ).Cells(Rows.Count, 4).End(xlUp).Row) 
'Définition des valeurs de la combobox1  par les valeurs de la colonne D 
 
Vous voyez bien qu'il manque un tout petit bout du code mais la solution réside en vous... 
 
Merci. A bientot. 
 
 
a+
Marsh Posté le 06-04-2006 à 17:20:14
Salut McKoy 
 
Désolée de n'avoir pas répondu plus tôt mais le boulot oblige (parfois  )
) 
 
Je te propose ci-dessous un code que j'avais fait pour un de mes fichier et que j'ai adapté (un peu - tu devra sans doute y revenir) à ton cas. 
 
Ce code je l'ai placer dans userform_initialize et dans cet userform j'ai une combobox (combobox1). Il repli la combobox1 avec des données des cellules d'une feuille (multi et mono lignes). Il ne tien pas compte des doublons. et tri les données dans la combobox. 
 
Le code est commenté tu devrais pouvoir t'y retrouver.
| Code : 
 | 
@+
Marsh Posté le 11-04-2006 à 10:22:00
Merci pour ton code watashi mais depuis j'avais trouvé comment faire autrement. 
le contenu de ma colonne avec les cellules de plusieurs lignes est divisé en deux sur la colonne a droite avec les fonctions left et right 
et celle colonne de droite est encorée divisée en deux vers la droite de la meme maniere 
 
Ensuite j'ai supprimé les cellules vides des 2 nouvelles colonnes et j'ai collé leur contenu dans la plage maitresse. 
Cette plage est alors triée et j'alimente ma combobox.... 
 
Oufff !!! enfin 
 
 
 
Marsh Posté le 11-04-2006 à 12:08:25
Ok super que tu aies réussi à t'arranger. 
 
Rien ne t'empêche tout de même de regarder comment le code fonction. 
 
C'est une bonne machinerie pour mettre en place et trier les données pour une combobox sans passer par une écruiture sur une feuille. 
 
@+ 
P.S. : le code que tu as utilisé pour résoudre ton schmilblick peut en interesser d'autres  Un petit résolu dans le titre de ton post aussi
 Un petit résolu dans le titre de ton post aussi 
Marsh Posté le 03-05-2006 à 01:28:48
j' ai résolu mais comment faire pour changer le titre de mon post
Marsh Posté le 03-05-2006 à 09:30:28
Salut  mckoy 
tu cliques sur l'icone qui représente un papier avec une gomme au bout d'un crayon et tu changes juste le titre du post  
 
@+
Marsh Posté le 03-04-2006 à 01:38:34
bonjour,
voila le problème !!!!
J'ai des données en lignes sur plusieurs colonnes
Dans la colonne E , j'ai soit des cellules vides, soit des cellules contenant 1 ligne, 2 lignes ou 3 lignes
J'aimerais pouvoir extraire 1 ligne vers 1 cellule (dans une autre feuille) et ceci pour chaque cellule de la colonne.
J'ai découvert que le "alt+entrée" dans une cellule correspondait au chr(10) et j'ai supposé que les fonctions left right et len me seraient utiles....
je pourrais ensuite trier ces données, supprimer les doublons et alimenter une combobox : il me manque juste la division de la cellule
Je sais que watashi pourra surement apporter son aide précieuse ainsi que galopin ou alain'tech
merci d'avance et bonne méditation
Message édité par mckoy25 le 08-05-2006 à 02:51:38