XL 2016 Copie de donnée vers feuill

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

Bonjour.
Essayez comme ça :
VB:
Option Explicit
Private Rng As Range, LCou As Long
Private Sub UserForm_Initialize()
   Set Rng = Feuil1.[A1].Resize(Feuil1.[A1000000].End(xlUp).Row, 2)
   With ListBox3
      .ColumnCount = 3
      .ColumnWidths = "40;60;40"
      .List = Rng.Value
      End With
   End Sub
Private Sub ListBox3_Click()
   LCou = ListBox3.ListIndex + 1
   TextBox3.Text = Rng(LCou, 1).Value
   TextBox4.Text = Rng(LCou, 2).Value
   End Sub
Private Sub CommandButton1_Click()
   If LCou = 0 Then Exit Sub
   Rng(LCou, 1).Value = TextBox3.Text
   Rng(LCou, 2).Value = TextBox4.Text
   ListBox3.List = Rng.Value
   End Sub
 
Bonjour mohaamri, Bernard, le forum,

Si l'on veut avoir le choix entre ajouter, modifier, supprimer :
VB:
Dim P As Range 'mémorise la variable

Private Sub CommandButton1_Click() 'Ajouter
If TextBox3 = "" Then TextBox3.SetFocus: Exit Sub
If Application.CountIf(P.Columns(1), TextBox3) Then MsgBox "'" & TextBox3 & "' existe déjà...": Exit Sub
P(P.Rows.Count + 1, 1) = TextBox3
P(P.Rows.Count + 1, 2) = TextBox4
UserForm_Initialize
End Sub

Private Sub CommandButton2_Click() 'Modifier
If ListBox3.ListIndex = -1 Then MsgBox "Sélectionnez une ligne...": Exit Sub
If TextBox3 = "" Then TextBox3.SetFocus: Exit Sub
P(ListBox3.ListIndex + 2, 1) = TextBox3
P(ListBox3.ListIndex + 2, 2) = TextBox4
UserForm_Initialize
End Sub

Private Sub CommandButton3_Click() 'Supprimer
If ListBox3.ListIndex = -1 Then MsgBox "Sélectionnez une ligne...": Exit Sub
If MsgBox("Supprimer '" & ListBox3 & "' ?", 4) = 7 Then Exit Sub
P.Rows(ListBox3.ListIndex + 2).Delete xlUp
UserForm_Initialize
End Sub

Private Sub ListBox3_Click()
TextBox3 = ListBox3.Column(0)
TextBox4 = ListBox3.Column(1)
End Sub

Private Sub UserForm_Initialize()
Set P = Sheets("AMRI").[A1].CurrentRegion
If P.Rows.Count = 1 Then ListBox3.Clear: CommandButton2.Enabled = False: CommandButton3.Enabled = False: Exit Sub
P.Sort P(1), xlAscending, Header:=xlYes 'tri alphabétique
ListBox3.List = P.Rows(2).Resize(P.Rows.Count - 1, 2).Value
End Sub
A+
 

Pièces jointes

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

Réponses
15
Affichages
354
Réponses
3
Affichages
230
Retour