Wan

Wan

XLDnaute Nouveau
Bonjour tout le monde,

J'expose mon problème à celui qui veut bien me le résoudre (en fait je ne sais pa si c'est possible)
en colonne A, j'ai des entités de batiments par exemple

COLONNE A COLONNE B

batiment a salle1
salle2
salle3
salle4 et etc

batiment b salle1
salle2
salle3

donc dans une userform, j'ai un combobox qui liste tous les batiments
et ensuite, j'ai dans une listebox la liste des salles appoprié au batiment choisi dans la combobox

Le problème est le suivant y a-t-il un style de focus pour commencer la plage de selection a partir du batiment choisi

1. Je sélectionne le batiment
2.la cellule se déplace vers la gauche et la place de selection commence là jusqu'à la 65356 ème.

et la ça coince pouvez-vous m'aider s'il vous plaît.
 

JeanMarie

XLDnaute Barbatruc
Re : Wan

Bonjour

Une proposition
Code:
Sub listesalle()
Dim Tata As Range
Dim vBat As Integer
UserForm1.ListBox1.Clear
vBat = Application.Match(UserForm1.ComboBox1.Text, Range("A:A"), 0)
For Each Tata In Range("b" & vBat & ":b65356")
    If Tata <> "" Then
        UserForm1.ListBox1.AddItem (Tata)
        Else: Exit Sub
    End If
Next Tata
End Sub
@+Jean-Marie
 

JeanMarie

XLDnaute Barbatruc
Re : Wan

Re...

Ce n'est pas une propriété, mais une fonction d'Excel utilisable dans le VBA, tu peux retrouver cette fonction dans l'aide d'excel à EQUIV.

PS : Tu peux retrouver toutes les fonctions d'Excel utilisable dans VBA, en visualisant la catégorie
WorksheetFunction de la boîte de dialogue du menu Affichage/Explorateurs d'objets...
Attention, les noms des fonctions sont traduites en anglais.

@+Jean-Marie
 
Dernière édition:

Wan

XLDnaute Nouveau
Re : Wan

Rebonjour sous un autre jour,

Je voudrais savoir s'il était possible de modifier:

vBat = Application.Match(UserForm1.ComboBox1.Text, Range("A:A"), 0)

Avec une troisième colonne pour référencer le nombre de places disponibles.

Car j'ai ajouter le une boucle For each Toto pour la colonne "C" mais en gardant la variable vBat et finalement ca bogue donc commen y parvenir ?

Voilà le code :

Dim Tata, Toto As Range
Dim Valg, Vald, g, d, Mot
Dim vBat As Integer
'Voir autre chose pour connaître l'adresse de la cellule active
UserForm2.ListBox1.Clear
vBat = Application.Match(UserForm2.ComboBox1.Text, Range("A:A"), 0)
For Each Tata In Range("b" & vBat & ":b65356")
For Each Toto In Range("c" & vBat & ":c65356")
If Tata <> "" Then
If Toto <> "" Then
UserForm2.ListBox1.AddItem ("Nom batiment: " & Tata & "/ N° salle: " & Toto)
ElseIf Toto = "" Then
Toto = 0
UserForm2.ListBox1.AddItem ("Nom batiment: " & Tata & "/ N° salle: " & Toto)
End If
Else: Exit Sub
End If
Next Toto
Next Tata
 

JeanMarie

XLDnaute Barbatruc
Re : Wan

Bonjour Wan

Essaye ceci
Code:
Dim Tata As Range
Dim Valg, Vald, g, d, Mot
Dim vBat As Integer
'Voir autre chose pour connaître l'adresse de la cellule active
UserForm2.ListBox1.Clear
vBat = Application.Match(UserForm2.ComboBox1.Text, Range("A:A"), 0)
For Each Tata In Range("b" & vBat & ":b65356")
   If Tata <> "" Then
      If Tata.Offset(0, 1) <> "" Then
         UserForm2.ListBox1.AddItem ("Nom batiment: " & Tata & "/ N° salle: " & Tata.Offset(0, 1))
      Else
         If Tata.Offset(0, 1) = "" Then Tata.Offset(0, 1) = 0
      UserForm2.ListBox1.AddItem ("Nom batiment: " & Tata & "/ N° salle: " & Tata.Offset(0, 1))
      End If
   Else: Exit Sub
End If
Next Tata

Attention dans Dim Tata, Toto As Range
Tata sera de type Variant, le VBA étant différent des autres logiciels de programmations dans la définitions des variables.

@+Jean-Marie
 

Discussions similaires

Réponses
13
Affichages
444

Statistiques des forums

Discussions
312 836
Messages
2 092 651
Membres
105 478
dernier inscrit
tim51