XL 2016 Supprimer les données dans plusieurs feuilles

Maxime26

XLDnaute Nouveau
Bonsoir a tous ,
je vous écrit car je suis confronté a une problématique , en effet j'aimerai pouvoir grâce a un userform pour supprimer les donnée suite a une recherche :

voici ce que j'aimerais faire (les points 1 a 4 sont fonctionnelle mais je bloque complémentent sur le point 5)

1-Ouverture de l'userform suite au clique sur le bouton transfert présent dans la feuille "Datashboard .
2-on renseigne le numéro de la personne que l'on recherche sur la textbox "Num".
3-on appuie sur le bouton recherche et les informations (nom,prenom)se renseigne dans les textbox qui leur son destinée.
4-lors du clique sur le bouton transfert de l'userform les informations de la personne recherché viennent se coller dans la feuilles Datashboard une seul fois.
5-parrallement au 4 -ème points les informations (nom,prenom,num) du numéro recherché se supprime de toute les feuilles ou elles se trouvent .

Jai essayé d'écrire un bout de code pour le point 5 mais ca ne fonctionne pas et je ne comprend pas pourquoi .

Si vous avez ne serait ce que des pistes pour m'aider je suis preneur .

Voici le bout de code qui permet de coller les données dans la feuille "Dashboard" et qui devrait supprimer les donnée de la recherche de toute les feuilles


VB:
Private Sub CommandButton2_Click()    'tranfert
    If lig = 0 Then Exit Sub
    With Sheets("Dashboard")
        .Cells(lig, 1) = Me.txtNom
        .Cells(lig, 2) = Me.txtPrenom
        .Cells(lig, 3) = Me.txtNum
    End With


Dim bs As Worksheet
Dim i As Integer


 For Each bs In ThisWorkbook.Worksheets
        If bs.Name <> "Dashboard" Then    ' ici les noms de feuille à exclure


'on se positionne sur la derniere ligne de la colonne A et on remonte jusqu'a la n°2
For i = bs.Range("C" & bs.Rows.Count).End(xlUp).Row To 5 Step -1

'si la cellule correspond au numero saisie
If bs.Range("C" & i).Value = txtNum Then

'on suprime la ligne
Rows(i).Delete

End If
Next i


  End If
    Next
End Sub
 

Pièces jointes

  • OFFICIEL V1 avec TS.xlsm
    32.8 KB · Affichages: 6
Solution
Bonjour @Maxime26

Il y a 2 problèmes dans ta macro :
1)Num n'ést pas déclaré comme variable
2)Rows(i).Delete ne spécifie pas la feuille donc par défaut c'est la feuille active !!!

La voici qui fonctionne :
VB:
Private Sub CommandButton2_Click()    'tranfert
If lig = 0 Then Exit Sub
With Sheets("Dashboard")
    .Cells(lig, 1) = Me.txtNom
    .Cells(lig, 2) = Me.txtPrenom
    .Cells(lig, 3) = Me.txtNum
End With

Dim bs As Worksheet
Dim i As Integer, Num&

Num = Me.txtNum.Value
For Each bs In ThisWorkbook.Worksheets
    If bs.Name <> "Dashboard" Then    ' ici les noms de feuille à exclure
        'on se positionne sur la derniere ligne de la colonne A et on remonte jusqu'a la n°2
        For i = bs.Range("C" &...

Phil69970

XLDnaute Barbatruc
Bonjour @Maxime26

Il y a 2 problèmes dans ta macro :
1)Num n'ést pas déclaré comme variable
2)Rows(i).Delete ne spécifie pas la feuille donc par défaut c'est la feuille active !!!

La voici qui fonctionne :
VB:
Private Sub CommandButton2_Click()    'tranfert
If lig = 0 Then Exit Sub
With Sheets("Dashboard")
    .Cells(lig, 1) = Me.txtNom
    .Cells(lig, 2) = Me.txtPrenom
    .Cells(lig, 3) = Me.txtNum
End With

Dim bs As Worksheet
Dim i As Integer, Num&

Num = Me.txtNum.Value
For Each bs In ThisWorkbook.Worksheets
    If bs.Name <> "Dashboard" Then    ' ici les noms de feuille à exclure
        'on se positionne sur la derniere ligne de la colonne A et on remonte jusqu'a la n°2
        For i = bs.Range("C" & bs.Rows.Count).End(xlUp).Row To 5 Step -1
            'si la cellule correspond au numero saisie
            If bs.Range("C" & i).Value = Num Then
                'on suprime la ligne
                bs.Rows(i).Delete
            End If
        Next i
    End If
Next
End Sub

*Merci de ton retour

@Phil69970
 

Discussions similaires