combobox vers listview

geraldvc

XLDnaute Junior
Bonjour les doués.

j'ai 2 combo que je voudrais transférer vers une listview!

je m'explique :

combo1 = choix d'un continent et combo2 = choix d'un pays

le résultat des critère des 2 combo, je voudrais les faire transférer vers la listview avec un bouton pour pouvoir envoyer plusieurs fois .

Donc dans ma listview il y a 2 colonne et il peux y avoir 4ou 5 ou 6 continent et pays.

2éme pt truc; Cette listview dois avec un autre bouton être transférer dans un feuille Excel?

Merci d'avance
 

bqtr

XLDnaute Accro
Re : combobox vers listview

Bonsoir geraldvc,

Voici un exemple de ce que l'on peut faire si j'ai bien compris.
Tu aurais pu mettre un bout de fichier en PJ, cela évite de tout faire à l'aveuglette :)

A+
 

Pièces jointes

  • Classeur1.zip
    14.3 KB · Affichages: 101
  • Classeur1.zip
    14.3 KB · Affichages: 100
  • Classeur1.zip
    14.3 KB · Affichages: 97

geraldvc

XLDnaute Junior
Re : combobox vers listview

ok super c'est tout a fait mais un petit truc de plus?

petit chose:

dans la listview j'ai : 1 ère ligne = ; Afrique Tunisie elle vas se ranger en D1 et E1 ça ok

Mais dans le cas ou j'ai 2 ligne elle devrais aller ce ranger a côte(0,1) F1 et G1

dans le cas 3 ligne H1 et I1.

Voila merci d'avance
 
Dernière édition:

bqtr

XLDnaute Accro
Re : combobox vers listview

Re,

Remplace le code du bouton de transfert vers la feuille par celui-ci :
Code:
Private Sub CommandButton2_Click()

Dim k As Integer, Dercol As Byte, Reponse As String
With Sheets("Feuil1")
  Reponse = MsgBox("Voulez vous effacer la ligne 1 ?", vbYesNo, "Effacement ligne 1:")
  If Reponse = vbYes Then
    .Range("D1:IV1").ClearContents
    Dercol = IIf(.Range("IV1").End(xlToLeft).Column < 4, 4, .Range("IV1").End(xlToLeft).Column + 1)
      For k = 1 To ListView1.ListItems.Count
        .Cells(1, Dercol) = ListView1.ListItems(k).Text
        .Cells(1, Dercol + 1) = ListView1.ListItems(k).ListSubItems(1).Text
        Dercol = Dercol + 2
      Next
  Else
    Dercol = IIf(.Range("IV1").End(xlToLeft).Column < 4, 4, .Range("IV1").End(xlToLeft).Column + 1)
      For k = 1 To ListView1.ListItems.Count
        .Cells(1, Dercol) = ListView1.ListItems(k).Text
        .Cells(1, Dercol + 1) = ListView1.ListItems(k).ListSubItems(1).Text
        Dercol = Dercol + 2
      Next
  End If
End With
ListView1.ListItems.Clear

End Sub

Cela te permet de mettre les données sur la ligne 1 à partir de E1 les unes après les autres en une ou plusieurs fois.
Au cas où j'ai ajouté une MsgBox qui te demande si tu souhaites effacer la première ligne. Si la réponse est "oui", effacement de la ligne 1 et les données sont mises à partir de E1. Si la réponse est "non", les données s'ajoutent à la suite.

A+
 

geraldvc

XLDnaute Junior
Re : combobox vers listview

salut,
voici le code que j'ai déjà, qu'il faut adapter... comme ça tu pourra mieux comprendre !
Le code de transfère de la listview devrais aller derrière celui-ci car il cherche la première ligne vide et puis il les transfère !

car j'ai fait des essai mais non concluent !!!

mille excuse je suis pas très doué je me lance la dedans et je voudrais arriver au bout!!!

merci



Private Sub CommandButton4_Click()

Dim k As Integer

Application.ScreenUpdating = False

Range("listedata").Activate

En_Colonne = ActiveCell.Column
En_Ligne = ActiveCell.Row + 1
While Not IsEmpty(ActiveCell.Value)
Cells(En_Ligne, En_Colonne).Activate
En_Ligne = En_Ligne + 1
Wend

ActiveCell.Offset(0, 0).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa1

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa2

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa3

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa4

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa5

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa6

ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa9

ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa12

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa13

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa14

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa15

ActiveCell.Offset(0, 16).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa31

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa32

ActiveCell.Offset(0, 6).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa38

ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa41

ActiveCell.Offset(0, 8).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa49

ActiveCell.Offset(0, 9).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa58
ActiveCell.Offset(0, 6).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa64
ActiveCell.Offset(0, 16).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa80

ActiveCell.Offset(0, 13).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa93

ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = UserForm2.cbxa94




End Sub
 

MuscatMimi

XLDnaute Accro
Re : combobox vers listview

Salut bqtr ,geraldvc et le forum

Pour zipper ton fichier Excel
Cliq droit sur ton bureau ou dans le vide de ton dossier ou ce trouve ton fichier
et dans le contextuel ,tu va sur la ligne Nouveau, et la tu sélectionne Dossier compréssé
aprés tu fait un copier de ton fichier et un coller dans le dossier Compréssé

cordialement
 

bqtr

XLDnaute Accro
Re : combobox vers listview

Re bonjour, salut Christian,

Si je comprends bien ton code, tu recherches la première ligne vide disponible et tu places tes données en fonction de cette dernière.

Donc est normal que tu commences à la colonne "BB", 1ère colonne de la plage nommée "listedata" ? dans ce cas il y a des données qui sont à l'extérieur de ton tableau.

Pour les continents et les pays d'après ce que tu dis, tu souhaites les mettre en ligne (D1,E1,F1,G1,H1,I1). Cela veut dire que pour une personne il peut y avoir plusieurs continents et pays ?

Peux-tu me dire comment tu veux placer les données.
En attendant voici comment faire pour éviter tous les "Select" qui ne sont pas utiles.

La première ligne de la macro du bouton concerne la déclaration des variables :
Code:
Dim Derlign As Long, k As Byte, Col As Byte
Ensuite tu détermines la 1ère ligne vide et tu affectes la valeur 95 (n° de la colonne CQ) à la variable "Col" comme ceci :
Code:
Derlign = Sheets("Data").Range("[B]D[/B]65536").End(xlUp).Row + 1
Col = 95
Là j'ai pris la colonne D comme colonne de référence car je pense qu'elle sera toujours renseignée.

Ensuite pour renseigner les cellules tu procèdes comme ceci :
Code:
With Sheets("Data")
  .Range("B" & Derlign) = cbxa2
  .Range("D" & Derlign) = cbxa4
  '.../...
End With
Enfin pour les pays et les continents si tu les veux en lignes :
Code:
With ListView2
    For k = 1 To .ListItems.Count
      Sheets("Data").Cells(Derlign, Col) = .ListItems(k).Text
      Sheets("Data").Cells(Derlign, Col + 1) = .ListItems(k).ListSubItems(1).Text
      Col = Col + 2
    Next
    .ListItems.Clear
End With

Attention tout de même, la variable "Col" ne pourra pas avoir une valeur supérieure à 256 (limite du nombre de colonne sous Excel, sauf pour Excel 2007).

A+
 
Dernière édition:

geraldvc

XLDnaute Junior
Re : combobox vers listview

voici le code comme tu me la montré il fonctionne sauf la livtview il y a que 1 continent et 1 pays qui par les autre ?
Bien à toi Gérald


Private Sub CommandButton4_Click()
Dim Derlign As Long, k As Byte, Col As Byte 'La première ligne de la macro du bouton concerne la déclaration des variables :

Derlign = Sheets("Data").Range("D65536").End(xlUp).Row + 1 'étermines la 1ère ligne vide et tu affectes la valeur 1 (n° de la colonne a) à la variable "Col" comme ceci :
Col = 1

With Sheets("Data") ' determine les combo a envoyer dans la feuillr data
.Range("e" & Derlign) = cbxa5
.Range("a" & Derlign) = cbxa1

.Range("d" & Derlign) = cbxa4
.Range("b" & Derlign) = cbxa2
.Range("c" & Derlign) = cbxa3
.Range("f" & Derlign) = cbxa6
.Range("bl" & Derlign) = cbxa64
.Range("cp" & Derlign) = cbxa94
.Range("i" & Derlign) = cbxa9
.Range("l" & Derlign) = cbxa12
.Range("n" & Derlign) = cbxa14
.Range("o" & Derlign) = cbxa15
.Range("m" & Derlign) = cbxa13
.Range("bf" & Derlign) = cbxa58
.Range("ax" & Derlign) = cbxa49
.Range("cb" & Derlign) = cbxa80
.Range("af" & Derlign) = cbxa32
.Range("al" & Derlign) = cbxa38
.Range("ai" & Derlign) = cbxa35
.Range("ae" & Derlign) = cbxa31
.Range("co" & Derlign) = cbxa93
.Range("bz" & Derlign) = cbxa78





End With
With ListView2
For k = 1 To .ListItems.Count
Sheets("Data").Cells(Derlign, 95) = .ListItems(k).Text
Sheets("Data").Cells(Derlign, 95 + 1) = .ListItems(k).ListSubItems(1).Text
Col = Col + 2
Next
.ListItems.Clear
End With
End Sub
 

bqtr

XLDnaute Accro
Re : combobox vers listview

Re,

La variable Col doit avoir comme valeur de départ la valeur 95.
La colonne CQ correspond à la 95 ème colonne de la feuille.

Donc remplace Col = 1 par Col = 95 au début du code.
Puis dans le code de la listview il faut remplacer 95 par la variable Col.
Comme ceci:
Code:
With ListView2
    For k = 1 To .ListItems.Count
      Sheets("Data").Cells(Derlign, Col) = .ListItems(k).Text
      Sheets("Data").Cells(Derlign, Col + 1) = .ListItems(k).ListSubItems(1).Text
      Col = Col + 2
    Next
Dans l'hypothèse où tu places les continents et les pays en ligne.

A+
 

Discussions similaires

Réponses
69
Affichages
4 K

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote