Modifier des données d'un tableau a partir UserForm

  • Initiateur de la discussion Initiateur de la discussion Chot51
  • 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 !

Chot51

XLDnaute Nouveau
Bonjour,


J'ai fais un fichier sur lequel j'ai une feuille avec un bouton et une autre servant de BASE DE DONNEE (feuille "Répertoire"). AVec le bouton feuille 1 j'ouvre une UserForm sur laquelle j'ai une listBox1 presentant les éléments de la colonne A de "Répertoire". lorsque je clique sur un des éléments, une Text box afiche les données de la colonne B, un autre Textbox colonne C...... jusqu'à P.
je souhaiterais pouvoir changer le contenu de la cellule colonne P a partir de la UserForm. En fait je change le contenu dans la UserForm et quand je clique sur le CommandBouton2 je voudrais que se changement prenne effet dans mon tableau.
Mon probleme est que le changement prend effet sur la derniere ligne du tableau quelque soit la ligne sélectionnée alors que moi je veux l'attribué à la ligne correspondant à ma sélection dans ma listBox1.

Voici ce que j'ai écris pour le boutton 2

Private Sub CommandButton2_Click()
Dim Plage As Range, Cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Integer, N As Integer
Dim C As Range

With Sheets("Répertoire")

Ligne = Feuil2.Range("A" & "65536").End(xlUp).Row
Set Plage = Feuil2.Range("A" & "2:" & "A" & Ligne)
For Each Cell In Plage
If Cell.Value = ListBox1.Value Then

Feuil2.Range("P" & Ligne).Value = TextBox14

End If
Next Cell
End With
End Sub


Merci pour votre aide
 
Re : Modifier des données d'un tableau a partir UserForm

Bonsoir Chot51

Essaye avec ceci :

Feuil2.Range("P" & ListBox1.ListIndex + 2).Value = TextBox14

ListIndex renvoie un n° qui correspond à la position de l'élément dans la ListBox. La numérotation commence à zéro. Le premier élément = 0, le deuxième = 1 .../.... Donc pour avoir le n° de ligne tu rajoutes 2.

Ex : Si tu sélectionnes le premier élément de la ListBox, cela donne 0 + 2 donc la Cellule "P" & 2 ==> P2.

Bonne nuit


 
Dernière édition:
Re : Modifier des données d'un tableau a partir UserForm

En fait c pas bon car ma listbox ne présente pas les items dans l'ordre du tableau, il me faudrait une formule qui trouve la ligne en fonction de se qui est marqué dans la colonne A.

Merci
 
Re : Modifier des données d'un tableau a partir UserForm

Re bonjour,

Alors essaye comme ca :

If Cell.Value = ListBox1.Value Then
Cell.Offset(0,15).Value = TextBox14

Offset(ligne,colonne) permet de faire un décalage par rapport à une cellule de référence.

A+

 
Re : Modifier des données d'un tableau a partir UserForm

Bonjour

Une autre approche pour résoudre ce problème.
Utiliser une listbox ou combobox avec une colonne cachée qui contient le numéro de ligne correspondant à la donnée visible.

Code:
ComboBox1.ColumnCount = 2
ComboBox1.Clear
' alimentation de la combobox en stockant des infos : feuille adresse
ComboBox1.ColumnWidths = "90;0" ' 0 pour la colonne cachée

    For i = 2 To Sheets("Sheet1").Range("A65536").End(xlUp).Row
        ComboBox1.AddItem Sheets("Sheet1").Range("A" & i)
        ComboBox1.List(ComboBox1.ListCount - 1, 1) =  i ' dans la deuxième colonne on stocke 
'le numéro de la ligne
    Next i 

le code suivant permet de récupérer le numéro de la ligne

ad1 = ComboBox1.List(ComboBox1.ListIndex, 1)


JP
 
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

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
280
Réponses
7
Affichages
116
Retour