Code qui ne marche que si onglet actif ?

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

Toujours aussi rapide et efficace

1000 mercis

Rechercher des sujets similaires à "code qui marche que onglet actif"