• Initiateur de la discussion Initiateur de la discussion mohama
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mohama

Guest
Bonjour a tous, bonjour le Forum

j'ai trouvé un exemple excel qui m'intéresse ,mais je n'est pas pu faire une range comme je le veux j'ai tous fait et j'ai n'est pas pus

je veux faire une range sur ; exemple sur la cellule (D13), ou autre cellule

je veux comprendre l'astuce de range sur les listebox


Private Sub ComdQuitter_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim L As Integer
Dim Plage As String
L = Sheets("DataBase").Range("A65536").End(xlUp).Row + 1
Plage = Sheets("DataBase").Range("A2😀" & L).Address
ListBox1.RowSource = "DataBase!" & Plage
ListBox1.ColumnCount = 3
ListBox1.ColumnHeads = True
ListBox1.ColumnWidths = 80
End Sub
Private Sub ComdValider_Click()
Dim L As Integer, x As Byte
L = Sheets("Inserer").Range("A65536").End(xlUp).Row + 1
With Me.ListBox1
For x = 0 To .ListCount - 1
If .Selected(x) = True Then
Sheets("Inserer").Range("A" & L) = .Column(0, x) 'D13
Sheets("Inserer").Range("B" & L) = .Column(1, x) 'E13
Sheets("Inserer").Range("C" & L) = .Column(2, x) 'F13
L = L + 1
End If
Next x
End With
Unload Me
End Sub
 
Dernière modification par un modérateur:
Re : range textebox

Bonjour,
que désire tu exactement 'cest de remplir une listbox a partir d'une ou plusieurs cellules?

Si oui:
Code:
listbox1.additem range("d13").value
'listbox1=nom du control
' add=ajout
'item =ce qui sera ajouté ( item)
' range("d13")= cellules d13
'.value= valeur de la cellule range("???")
par exemple.
sinon tu as aussi la propriété du controle listbox (rowsource)
voir F1 aide excel

A+
 
Re : range textebox

mr fhoest
Reste le problème du .Range("A65536").End(xlUp).Row + 1
Votre Solution écris sur la même ligne,




Celui qui croit tout connaitre, ne connait sans doute pas grand chose.
Chacun apporte son savoir, mais on a tous tout à apprendre .... fhoest
 
Re : range textebox

Bonjour mohama, fhoest,
Si je puis me permettre, deux propositions :
Code:
Private Sub UserForm_Initialize()
ListBox1.RowSource = "DataBase!A2:A" & Sheets("DataBase").Range("A" & Application.Rows.Count).End(xlUp).Row
ListBox1.ColumnCount = 3
ListBox1.ColumnHeads = True
ListBox1.ColumnWidths = 80
End Sub
et
Code:
Private Sub ComdValider_Click()
Dim L As Integer, x As Byte
With Me.ListBox1
For x = 0 To .ListCount - 1
If .Selected(x) = True Then
L = Sheets("Inserer").Range("A65536").End(xlUp).Row + 1
Sheets("Inserer").Range("A" & L) = .Column(0, x) 'D13
Sheets("Inserer").Range("B" & L) = .Column(1, x) 'E13
Sheets("Inserer").Range("C" & L) = .Column(2, x) 'F13
End If
Next x
End With
Unload Me
End Sub
Cordialement
 
Re : range textebox

En fait cette ligne
Code:
L = Sheets("DataBase").Range("A65536").End(xlUp).Row + 1
dit: la valeur L est égale a la ligne de la denière cellule non vide de la colonne A + 1 c'est a dire la ligne de la première cellule vide de la colonne A.
donc si tu veux ajouter une donnée a la suite et non pas a la ligne 13 tu dois utiliser la variable L dans la formule
comme ceci:
Code:
Sheets("Inserer").Range("D"&L).value = .Column(0, x)
Sheets("Inserer").Range("E"&L).value = .Column(1, x) 
Sheets("Inserer").Range("F"&L).value = .Column(2, x)
.
J'espère que tu as compris le fonctionnement maintenant
A+
 
Re : range textebox

Bonjour mohama, fhoest,
Si je puis me permettre, deux propositions :
Code:
Private Sub UserForm_Initialize()
ListBox1.RowSource = "DataBase!A2:A" & Sheets("DataBase").Range("A" & Application.Rows.Count).End(xlUp).Row
ListBox1.ColumnCount = 3
ListBox1.ColumnHeads = True
ListBox1.ColumnWidths = 80
End Sub
et
Code:
Private Sub ComdValider_Click()
Dim L As Integer, x As Byte
With Me.ListBox1
For x = 0 To .ListCount - 1
If .Selected(x) = True Then
'Chercher la dernière ligne maintenant
L = Sheets("Inserer").Range("A65536").End(xlUp).Row + 1
'le code de fhoest
Sheets("Inserer").Range("D13").value = .Column(0, x)
Sheets("Inserer").Range("E13").value = .Column(1, x) 
Sheets("Inserer").Range("F13").value = .Column(2, x)End If
Next x
End With
Unload Me
End Sub
Cordialement
 
Re : range textebox

Merci fhoest
donc je supprime
'Dim L As Integer


Private Sub ComdValider_Click()
'Dim L As Integer, x As Byte
Sheets("Inserer").Range("A65536").End(xlUp).Row 1
With Me.ListBox1
For x = 0 To .ListCount - 1
If .Selected(x) = True Then
Sheets("Inserer").Range("D13").Value = .Column(0, x)
Sheets("Inserer").Range("E13").Value = .Column(1, x)
Sheets("Inserer").Range("F13").Value = .Column(2, x)
L = L + 1
End If
Next x
End With
Unload Me
End Sub




ça marche pas Mr fhoest

l'Erreur est sur la ligne Sheets("Inserer").Range("A65536").End(xlUp).Row 1


écris toujours sur la même ligne
 
Dernière modification par un modérateur:
Re : range textebox

Re
Suite à MP ( le même que le post précédent):
Voici uin exemple d'où j'en suis.
Les données sont bien copiées sur la première ligne vide de la feuille Inserer:
Code:
Private Sub UserForm_Initialize()
ListBox1.RowSource = "DataBase!A2:C" & Sheets("DataBase").Range("A" & Application.Rows.Count).End(xlUp).Row
ListBox1.ColumnCount = 3
End Sub
Code:
Private Sub ComdValider_Click()
Dim L As Long, x As Byte
With Me.ListBox1
    For x = 0 To .ListCount - 1
        If .Selected(x) = True Then
            L = Sheets("Inserer").Range("D65536").End(xlUp).Row + 1
            Sheets("Inserer").Range("D" & L) = .Column(0, x) 
            Sheets("Inserer").Range("E" & L) = .Column(1, x) 
            Sheets("Inserer").Range("F" & L) = .Column(2, x) 
        End If
    Next x
End With
Unload Me
End Sub
Cordialement
 

Pièces jointes

Re : range textebox

NON, cela fonctionne,il faut juste modifier pas effacer
regarde

tu as supprimer le + du code
ensuite voila ce qu'il faut mettre
Code:
Private Sub ComdValider_Click()
'Dim L As Integer, x As Byte
Sheets("Inserer").Range("A65536").End(xlUp).Row [COLOR="Red"]+[/COLOR]1
With Me.ListBox1
For x = 0 To .ListCount - 1
If .Selected(x) = True Then
Sheets("Inserer").Range("D"[COLOR="Red"]&L[/COLOR]).Value = .Column(0, x)
Sheets("Inserer").Range("E"[COLOR="Red"]&L[/COLOR]).Value = .Column(1, x)
Sheets("Inserer").Range("F"[COLOR="Red"]&L[/COLOR]).Value = .Column(2, x)
'ci dessous tu inscrit L=L+1 cela  veut dire que pour la prochaine valeur de x
' la ligne de repaire L sera incrémenté de 1 
'donc tu ne va pas écrire sur la meme ligne
L = L + 1
End If
Next x
End With
Unload Me
End Sub

A+
Ps bonjour a toi Efgé

Merci fhoest
donc je supprime
'Dim L As Integer

ça marche pas Mr fhoest

l'Erreur est sur la ligne Sheets("Inserer").Range("A65536").End(xlUp).Row 1


écris toujours sur la même ligne
 
Re : range textebox

Re,
fhoest :J'ai l'impression que ne va pas s'en sortir aussis façilement que prévu...🙄

mohama: Avez vous ouvert mon fichier exemple ? Si oui cette version vous convient elle? Si non postez votre fichier (moins de 48,8 Ko) pour que l'on puisse mieux comprendre ou se situ votre problème.

A vous relire... ...sur le fil.
Cordialement
 
Re : range textebox

Patience Efgé,
parfois il suffit d'un déclic est c'est parti,juste tentez d'expliquer clairement avec le plus de commentaires me semble judicieux,
l'idée de poster le fichier est vrai que cela serait bien utile mais je pense que l'on est en bonne voie

Au plaisir.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
661
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
737
Réponses
4
Affichages
754
Réponses
1
Affichages
323
Retour