Pb pour definir une listbox

  • Initiateur de la discussion chris 54
  • Date de début
C

chris 54

Guest
bonjour a tous dans le fichier ci joint j ai un petit Pb
pour définir une zone dans combobox
si quelq'un peut ouvrir le fichier se serait super cool; je suis bloqué dans mon programme
un grand merci a pascal pour les info de tout a l heure
chris 54
 

Pièces jointes

  • planini.zip
    39.1 KB · Affichages: 19
C

chris 54

Guest
Ok dans mon userform7
je souhaiterais integrer une comobox ou listbox
cet userform s execute a partir de feuil2
or les données rowsource se trouvent dans la feuille 1("E90:E100")
les données en E90.e100 doivent etre visible dans ma boite de l userform7
par le biais d un bouton de base
excuse ZON pour ma maladresse je débute
 
Z

Zon

Guest
Re,

Rajoutes 2 combobox dans ton userform7 pour avoir l'exemple


Il existe 3 méthodes pour remplir une combobox ou une listbox. Voici ce que cela pourrait donner d'aprés ton exemple:=> à mettre dans l'évènement initialize de l'userform7

1 ére:additem
dim C as range 'on définit une variable C qui représente une cellule

With sheets("planning 1")'on indique sur quelle feuille travailler
For Each C In .Range("E90:E100")
If Not IsEmpty(C) Then ComboBox2.AddItem C.Value
Next C
End With

2 eme: Rowsource, attention avec celle ci il ne faut pas d'espace dans le nom de la feuille.il faut renolmmer la feuille "planning1"
With sheets("planning1")
ComboBox1.RowSource = .Name & "!" & .Range("E90:E100").Address
end With
'ou si tu préfères
ComboBox1.RowSource = "planning1!$Es90:$E$100"


3 eme par LIst: par un tableau
' tu n'es pas obligé(e) de redéfinir les ColumnCount et ColumnWidths à cahque fois mais comme dans l'exemple tu as fourni ces propriétes ont été modifiées je remets leur valeur par défaut
With ListBox1
.ColumnCount = 1 '
.ColumnWidths = ""
.List = Sheets(1).Range("E90:E100").Value
end With

Tu vas avoir des 1 ligne sur 2 de vides puisque tu as des cellules fusionnées=> voici une fonction que j'utilise régulièrement pour éviter les vides:

Function RecupV(T)
Dim I&, J&, Tmp()
For I = 1 To UBound(T, 1)
If Not IsEmpty(T(I, 1)) Then
ReDim Preserve Tmp(J)
Tmp(J) = T(I, 1)
J = J + 1
End If
Next I
RecupV = Tmp
End Function

cela devient:
.List = RecupV(Sheets(1).Range("E90:E100").Value)


Voilà j'espère que ce sera un peu plus clair pour toi, choisis pour la méthode qui te convient le mieux.


A+++
 
C

chris 54

Guest
boite supressions

Merci Zon je vais essayer ta methode
sans abuser? peut me donner un exemple concret dans l exemple ci joint? (car je débute en VBA )
de plus est il possible de créer comme un compteur pour signaler que cellulle ont été supprimer dans la colonne voiture ...
Ex si je suprime voiture1 dans l userform je souhaiterai qu'à chaque changement l userform aparaisse pour me dire que tel voiture a été supprimée et dans la ligne inférieur de l userform l endroit (onglet) où il est référencé 1 boite (compteur) qui précise le nombre de supréssions éffectuées du premier onglet
 

Pièces jointes

  • supression.zip
    8.9 KB · Affichages: 14
  • supression.zip
    8.9 KB · Affichages: 16
  • supression.zip
    8.9 KB · Affichages: 20
Z

Zon

Guest
Re: boite supressions

Salut,

En passant par des macros évènementielles qui sont dans le module de feuil1; Par contre je n'ai pas compris pour le compteur de suppression. Ici j'affiche l'userform quand une cellule est modifiée dans la colonne C. Tu parles aussi de la colonne A ???

A+++
 

Pièces jointes

  • SupressionChris.zip
    14.7 KB · Affichages: 23
  • SupressionChris.zip
    14.7 KB · Affichages: 23
  • SupressionChris.zip
    14.7 KB · Affichages: 26
C

chris 54

Guest
Re: boite supressions

Excellent travail !!!
merci mille fois
ce que je souhaitais c etait de creer un compteur cumulant le nbre de fois ou des celulles sont videes dans la colonne "c " "feuille1"
si tu peux y remédier sans abuser ce serai super cool
merci ZON
A+
 

Pièces jointes

  • SupressionChris.zip
    13.8 KB · Affichages: 18
  • SupressionChris.zip
    13.8 KB · Affichages: 19
  • SupressionChris.zip
    13.8 KB · Affichages: 22
Z

Zon

Guest
Re: boite supressions

Salut,

Je ne sais pas si cela te conviendra mais tu peux mettre un compteur dans une cellule, par exemple A1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range(Plage).Columns(3), Target) Is Nothing Then
If Len(Ch) = 0 Then Exit Sub
With UserForm1
.ListBox1.AddItem Ch
.ListBox2.AddItem Sheets(Right(Ch, 1) + 1).Name
.Show
[A1] = [A1] + 1 'ici à rajouter
End With
End If
End Sub

A+++
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11