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
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