Passer de chiffre de colonne en nombre

ifi77

XLDnaute Occasionnel
Bonjour @ tous,

Voila mon probleme, je me bats depuis quelques jours avec la création d'un filtrage multifeuille.
Mon probleme vient du fait que je crée une collection en rapportant le numéro de colonne en nombre, puis j'aurais besoin d'utiliser ce numéro pour le transformer en lettre afin d'utiliser la méthode range suivante:.

For Each cel In Sht.Range() 'boucle sur toutes les cellules éditées cel de la colonne B en partant de la seconde

'si la valeur de la cellule est égale à la valeur de la ComboBox1, ajoute le nom correspondant à la ListBox1
If cel.Value = Me.ComboBox2.Value Then
Me.ListBox1.AddItem cel.Offset(Lig, 1).Value
Next cel 'prochaine cellule de la boucle
End If 'fin de la condition

j'ai bien trouvé la fonction me permettant de passer d'un chiffre en lettre, cependant lorsque j'esaye de lui affecter une variable pour la reprendre après cela bloque la fonction tandis que si au lieu de:

LCol = Nombre_en_Lettre(Col)

je mets

msgbox Nombre_en_Lettre(Col) alors il me mets bien D (si col=4 bien sur...)

Je ne sais comment faire car je ne vois pas comment faire la boucle sur la colonne concernée sans le range, et je ne peux utiliser le range sans avoir une lettre de colonne (ou une variable la représentant).

Help SVP car je tourne en rond sans arret...

Merci

@+
 

ifi77

XLDnaute Occasionnel
Re : Passer de chiffre de colonne en nombre

Bonjour pierrot et merci,
Pourrais tu m'orienter sur la modification à apporter à range par cells dans ce code:
Private Sub ComboBox2_Change() 'au changement dans la ComboBox1
Dim x
Me.ListBox1.Clear 'vide la ListBox1
If Me.ComboBox2.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
For Each cel In Sht.Range("B2:B" & Lig')boucle sur toutes les cellules éditées cel de la colonne B en partant de la seconde
'si la valeur de la cellule est égale à la valeur de la ComboBox1, ajoute le nom correspondant à la ListBox1
If cel.Value = Me.ComboBox2.Value Then Me.ListBox1.AddItem cel.Offset(Dlig, 1).Value
Next cel 'prochaine cellule de la boucle
End If 'fin de la condition

Sachant que "B2:B" est remplacé par la variable Col

J'avais pensé à:

For Each cel In Sht.cells("",Col) mais je ne sais pas comment écrire de la ligne 2 à la dernière sachant que la dernière est caractérisée par la variante Dlig.

Merci
 

ifi77

XLDnaute Occasionnel
Re : Passer de chiffre de colonne en nombre

Merci pierrot je regarde cela, sinon entre temps j'ai mis cela, ca fonctionne mais qu'en penses tu?

Private Sub ComboBox2_Change() 'au changement dans la ComboBox1
Dim i As Variant
Dim cel As Range
Me.ListBox1.Clear 'vide la ListBox1
If Me.ComboBox2.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
For i = 2 To Dlig
If Sht.Cells(i, Col) = Me.ComboBox2.Value Then
With Me.ListBox1
.AddItem Sht.Cells(i, 1)
End With
End If
Next i
End If
End Sub

Mon probleme est que je ne sais pas comment afficher les 3 premières colonnes dans la listbox pour l'instant je l'ai bloqué à 1, comment bloqué de 1 à 3 dans .AddItem Sht.Cells(i, 1)

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Passer de chiffre de colonne en nombre

Re,

pour alimenter la 2 colonnes d'une listbox :
Code:
With Me.ListBox1
    .AddItem Sht.Cells(i, 1)
    .List(i - 1, 1) = Sht.Cells(i, 2)
End With

pour 3 colonnes
Code:
With Me.ListBox1
    .AddItem Sht.Cells(i, 1)
    .List(i - 2, 1) = Sht.Cells(i, 2)
    .List(i - 2, 2) = Sht.Cells(i, 3)
End With

A noter -2, parceque tu commence à incrémenter ta variable à 2 alors que la première ligne de la propriété list est 0... comme la 1ère colonne d'ailleurs...

la propriété "ColumnCount" doit être valorisée en fonction du nombre de colonnes...
 

ifi77

XLDnaute Occasionnel
Re : Passer de chiffre de colonne en nombre

Merci pierrot si ça fonctionne parfaitement bien lors de la première selection, des que je change de valeur dans la combobox, j'ai l'erreur suivante:
erreur d'execution 981, impossible de definir la propriété list, index de table de propriété non valide.

Qu'en penses tu?
 

Pierrot93

XLDnaute Barbatruc
Re : Passer de chiffre de colonne en nombre

Bonjour,

sans doute lorsque le test n'est pas vérifié... il faut utiliser une autre variable que tu incrémentes uniquement si OK...
Code:
x = 0
For i = 2 To Dlig
    If Sht.Cells(i, Col) = Me.ComboBox2.Value Then
        With Me.ListBox1
            .AddItem Sht.Cells(i, 1)
            .List(x, 1) = Sht.Cells(i, 2)
            .List(x, 2) = Sht.Cells(i, 3)
        End With
        x = x + 1
    End If
Next i

bonne jiournée
@+
 

Discussions similaires

Réponses
2
Affichages
196

Statistiques des forums

Discussions
312 753
Messages
2 091 668
Membres
105 040
dernier inscrit
PeupleVert