Code qui ne marche que si onglet actif ?
N
Bonjour à tous,
J'ai le code ci-dessous qui fonctionne très bien SEULEMENT si l'onglet de destination est Actif
est ce que quelqu'un aurait une solution pour qu'il fonctionne meme si l'onglet n'est pas actif ??
C'est à dire en supprimant la ligne
Worksheets(z).Activate
Lorsque je la supprime, le code ne me copie que le dernier résultat de la boucle de ma listbox (qui est une listbox à choix multiple).
Merci d'avance à celui qui pourra m'aider
Private Sub CommandButton3_Click()
Dim rFind As Range
Dim K As Long
Dim i As Long
Dim X As Long
Dim z As String
Dim T
Dim a$
Dim DerniereColonne
On Error GoTo errorHandler
z = TextBox1.Value
a$ = Sheets(z).Range("A1").SpecialCells(xlCellTypeLastCell).Address
T = Split(a$, "$", -1)
DerniereColonne = T(1)
Worksheets(z).Activate
With Sheets(z).Range("A1:" & DerniereColonne & "1")
Set rFind = .Find(What:=ComboBox3.Value, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
K = rFind.Row + 1
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Sheets(z).Cells(Cells(Rows.Count, rFind.Column).End(xlUp).Row + 1, rFind.Column).Value = Me.ComboBox4.Value & " -- " & Me.ListBox1.List(i)
K = K + 1
End If
Next i
End With
Exit Sub
errorHandler:
MsgBox "Error. "
End Sub
bonjour,
dans
Sheets(z).Cells(Cells(Rows.Count, rFind.Column)
Cells(Rows.Count,
il faut préciser le nom de la feuille, sinon c'est cells sur la feuille active
une proposition de correction (non testée, faute d'avoir ton fichier)
Private Sub CommandButton3_Click()
Dim rFind As Range
Dim K As Long
Dim i As Long
Dim X As Long
Dim z As String
Dim T
Dim a$
Dim DerniereColonne
On Error GoTo errorHandler
z = TextBox1.Value
a$ = Sheets(z).Range("A1").SpecialCells(xlCellTypeLastCell).Address
T = Split(a$, "$", -1)
DerniereColonne = T(1)
With Sheets(z)
Set rFind = .Range("A1:" & DerniereColonne & "1").Find(What:=ComboBox3.Value, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
K = rFind.Row + 1
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
.Cells(.Cells(Rows.Count, rFind.Column).End(xlUp).Row + 1, rFind.Column).Value = Me.ComboBox4.Value & " -- " & Me.ListBox1.List(i)
K = K + 1
End If
Next i
End With
Exit Sub
errorHandler:
MsgBox "Error. "
End Sub
N
Toujours aussi rapide et efficace
1000 mercis