UserForm remplit automatiquement
Résolu/Fermé
tiibo58000
Messages postés
7
Date d'inscription
jeudi 9 octobre 2014
Statut
Membre
Dernière intervention
30 avril 2015
-
Modifié par tiibo58000 le 30/04/2015 à 10:24
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 30 avril 2015 à 14:28
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 30 avril 2015 à 14:28
A voir également:
- UserForm remplit automatiquement
- Automatiquement - Guide
- Logiciel pour trier les photos automatiquement - Guide
- Classer automatiquement mail gmail - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Sauvegarder conversation snap automatiquement ✓ - Forum iPhone
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
30 avril 2015 à 10:23
30 avril 2015 à 10:23
Bonjour,
Plutôt que d'utiliser x textbox et x checkbox, pourquoi ne pas utiliser une listbox multiselect?
Plutôt que d'utiliser x textbox et x checkbox, pourquoi ne pas utiliser une listbox multiselect?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 30/04/2015 à 14:12
Modifié par pijaku le 30/04/2015 à 14:12
Si j'ai bien compris ta seconde question, tout se passe dans le CommandButton_Click :
Pour la variable Valeurs, il s'agit d'un String, une chaîne de caractères.
vbcrlf est le caractère pour passer à la ligne,
ListBox1.List(i) est la première colonne de ma listbox
ListBox1.List(i, 1) la seconde colonne.
On cherche à cumuler les lignes dans une même variablme, donc il faut conserver sa valeur et y ajouter les nouvelles valeurs.
Du coup, Valeurs = Valeurs (anciennes lignes déjà rentrés) + vbcrlf (passage à la ligne) + ListBox1.List(i) & " - " & ListBox1.List(i, 1) (nouvelles données).
Au premier passage, ce code va faire un passage à la ligne puis entrer les premières valeurs. Cela nous convient car on peut ajouter sur cette première "ligne" vide le message "Vous avez sélectionnés " blablabla.
C'est + clair?
Ne pas oublier, là c'est un bête exemple, de référencer la feuille contenant les données. En effet, puisque tu es dans un UserForm, il convient de le préciser pour le cas ou l'utilisateur aurait une autre feuille sélectionnée...
Dans ce cas, privilégier l'écriture suivante :
A noter : en cas d'utilisation de With End With, il convient de rapprocher les objets concernés en plaçant un point devant.
Ainsi :
devient
🎼 Cordialement,
Franck 🎶
Private Sub CommandButton1_Click() Dim i As Integer, Valeurs As String, Cpt As Integer 'pour i = 0, la ligne correspondante est la ligne 2 dans le classeur 'donc pour "colorier" les lignes, il suffit de colorer les lignes i+2 'il convient toutefois, avant de colorer, de "décolorer" tout Columns(1).Cells.Interior.ColorIndex = xlNone For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then Valeurs = Valeurs & vbCrLf & ListBox1.List(i) & " - " & ListBox1.List(i, 1) Cpt = Cpt + 1 '"coloration" Cells(i + 2, 1).Interior.ColorIndex = 3 End If Next i Valeurs = "Vous avez sélectionnés " & Cpt & " Chantiers : " & Valeurs MsgBox Valeurs End Sub
Pour la variable Valeurs, il s'agit d'un String, une chaîne de caractères.
vbcrlf est le caractère pour passer à la ligne,
ListBox1.List(i) est la première colonne de ma listbox
ListBox1.List(i, 1) la seconde colonne.
On cherche à cumuler les lignes dans une même variablme, donc il faut conserver sa valeur et y ajouter les nouvelles valeurs.
Du coup, Valeurs = Valeurs (anciennes lignes déjà rentrés) + vbcrlf (passage à la ligne) + ListBox1.List(i) & " - " & ListBox1.List(i, 1) (nouvelles données).
Au premier passage, ce code va faire un passage à la ligne puis entrer les premières valeurs. Cela nous convient car on peut ajouter sur cette première "ligne" vide le message "Vous avez sélectionnés " blablabla.
C'est + clair?
Ne pas oublier, là c'est un bête exemple, de référencer la feuille contenant les données. En effet, puisque tu es dans un UserForm, il convient de le préciser pour le cas ou l'utilisateur aurait une autre feuille sélectionnée...
Dans ce cas, privilégier l'écriture suivante :
Private Sub CommandButton1_Click() Dim i As Integer, Valeurs As String, Cpt As Integer 'pour i = 0, la ligne correspondante est la ligne 2 dans le classeur 'donc pour "colorier" les lignes, il suffit de colorer les lignes i+2 'il convient toutefois, avant de colorer, de "décolorer" tout With Sheets(1) . Columns(1).Cells.Interior.ColorIndex = xlNone For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then Valeurs = Valeurs & vbCrLf & ListBox1.List(i) & " - " & ListBox1.List(i, 1) Cpt = Cpt + 1 '"coloration" .Cells(i + 2, 1).Interior.ColorIndex = 3 End If Next i Valeurs = "Vous avez sélectionnés " & Cpt & " Chantiers : " & Valeurs MsgBox Valeurs End With End Sub
A noter : en cas d'utilisation de With End With, il convient de rapprocher les objets concernés en plaçant un point devant.
Ainsi :
Sheets(1).Range("A1")
devient
With Sheets(1)
.Range("A1")
End With
🎼 Cordialement,
Franck 🎶
tiibo58000
Messages postés
7
Date d'inscription
jeudi 9 octobre 2014
Statut
Membre
Dernière intervention
30 avril 2015
30 avril 2015 à 14:20
30 avril 2015 à 14:20
Re-bonjour
Merci pour toutes ces explications et ces précisions.
Entre temps, j'ai trouver une solution à mon problème.
Etant donné quand j'ai une colonne (dans mon tableau et dans ma List.Multiselect) où les valeurs sont uniques, j'ai fait ceci:
J'arrive au résultat que je voulais avec cette méthode, mais je garde la tienne au cas où!
Merci encore !
Merci pour toutes ces explications et ces précisions.
Entre temps, j'ai trouver une solution à mon problème.
Etant donné quand j'ai une colonne (dans mon tableau et dans ma List.Multiselect) où les valeurs sont uniques, j'ai fait ceci:
Dim i As Integer, Valeurs As String, Cpt As Integer, ref As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
'Création d'une variable ref pour stocker la valeur unique dans la colonne 3 de ma list, et la rechercher dans mon tableau
ref = Me.ListBox1.List(i, 3)
Cells.Find(What:=ref, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Select
ActiveCell.EntireRow.Select
With Selection.Interior.ColorIndex = 3
End with
...
End if
J'arrive au résultat que je voulais avec cette méthode, mais je garde la tienne au cas où!
Merci encore !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
30 avril 2015 à 14:22
30 avril 2015 à 14:22
Essaie en remplaçant :
par :
Cells.Find(What:=ref, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate ActiveCell.Select ActiveCell.EntireRow.Select With Selection.Interior.ColorIndex = 3
par :
Cells.Find(What:=ref, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).EntireRow.Interior.ColorIndex = 3
tiibo58000
Messages postés
7
Date d'inscription
jeudi 9 octobre 2014
Statut
Membre
Dernière intervention
30 avril 2015
30 avril 2015 à 14:24
30 avril 2015 à 14:24
Super ! Ça marche nickel merci !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
tiibo58000
Messages postés
7
Date d'inscription
jeudi 9 octobre 2014
Statut
Membre
Dernière intervention
30 avril 2015
30 avril 2015 à 14:28
30 avril 2015 à 14:28
de rien.
A+
A+
30 avril 2015 à 10:26
Il faudrai que j'essaie d'alimenter la ListBox Multiselect avec les valeurs de mon tableau. A travailler ! Merci
30 avril 2015 à 10:36
30 avril 2015 à 13:12
Même si je n'ai pas bien compris comment marche la variable "valeurs", j'aimerai savoir, une fois un certain nombre d'items de la liste sélectionnés, comment faire le chemin inverse, c'est à dire par exemple, mettre en sur-brillant rouge les lignes donc j'ai sélectionné les items?
30 avril 2015 à 10:42
Merci beaucoup