XL 2019 Supprimer une ligne d'une base de données une fois qu'elle est transférée sur une autre feuille

Isabellisa

XLDnaute Nouveau
Bonjour à vous tous qui m'avez sauvé la vie l'autre jour.

Je fais encore appel à vous. J'ai créé un formulaire pour transférer les employés de ma liste d'employés (shData) vers une autre feuille (Feuil1) qui contient la liste des employés qui nous ont quittés. Et ça fonctionne bien. En revanche, j'aimerais avoir un code VBA qui fait qu'en cliquant sur mon bouton qui fait le transfert, que les données transférées soient effacées de ma liste d'employés (shData).

Merci d'avance mes anges Excel VBA!
Isabellisa

VB:
'******************************************************************************
'Procédure permettant d'enregistrer dans les départs l'employé qui nous a quitté
'******************************************************************************

Private Sub btnAjouter_Click()
    'On calcule le nombre de ligne dans les départs
    Dim DerniereLigne As Integer
    DerniereLigne = Feuil5.Range("A500000").End(xlUp).Row + 1
  
    'On Désactive le rafraichissement de l'écran
    Application.ScreenUpdating = False
    'On teste si le nom de l'employé a été saisi
    If Me.TextBox15 = "" Then
        Me.lblMessage = "Vous n'avez pas saisie le nom et le prénom de l'employé qui nous a quitté"
    Else
  
  
    Feuil5.Cells(DerniereLigne, 1) = Me.TextBox15
    Feuil5.Cells(DerniereLigne, 2) = Me.TextBox16
    Feuil5.Cells(DerniereLigne, 3) = Me.TextBox29
    Feuil5.Cells(DerniereLigne, 4) = Me.TextBox30
    Feuil5.Cells(DerniereLigne, 5) = Me.ComboBox12
    Feuil5.Cells(DerniereLigne, 6) = Me.TextBox17
    Feuil5.Cells(DerniereLigne, 7) = Me.TextBox20
    Feuil5.Cells(DerniereLigne, 8) = Me.ComboBox5
    Feuil5.Cells(DerniereLigne, 9) = Me.TextBox28
    Feuil5.Cells(DerniereLigne, 10) = Me.ComboBox6
    Feuil5.Cells(DerniereLigne, 11) = Me.TextBox8
    Feuil5.Cells(DerniereLigne, 12) = Me.TextBox11
    Feuil5.Cells(DerniereLigne, 13) = Me.TextBox12
    Feuil5.Cells(DerniereLigne, 14) = Me.TextBox26
    Feuil5.Cells(DerniereLigne, 15) = Me.ComboBox7
    Feuil5.Cells(DerniereLigne, 16) = Me.TextBox8
    Feuil5.Cells(DerniereLigne, 17) = Me.TextBox19
    Feuil5.Cells(DerniereLigne, 18) = Me.TextBox10
    Feuil5.Cells(DerniereLigne, 19) = Me.TextBox18
    Feuil5.Cells(DerniereLigne, 20) = Me.TextBox13
    Feuil5.Cells(DerniereLigne, 21) = Me.TextBox22
    Feuil5.Cells(DerniereLigne, 22) = Me.TextBox21
  
      
    If Me.CheckBox2 = True Then
        Feuil5.Cells(DerniereLigne, 23) = Me.TextBox16 & " " & Me.TextBox15
    Else
        Feuil5.Cells(DerniereLigne, 23) = "Image vide"
    End If
  
  
  
    shMenu.Range("F5:AD5").ClearContents
    Unload Me
    MsgBox "Votre employé à bien été enregistré dans les départs et supprimé de la liste d'employés.", vbOKOnly + vbInformation, "CONFIRMATION SAUVEGARDE"
  
    End If


  
  
End Sub
 
Solution
Bonjour à tous

@Isabellisa

Si j'ai bien compris la demande sur la base du code du post# 1

VB:
'******************************************************************************
'Procédure permettant d'enregistrer dans les départs l'employé qui nous a quitté
'******************************************************************************

Private Sub btnAjouter_Click()
    'On calcule le nombre de ligne dans les départs
    Dim DerniereLigne As Integer
    DerniereLigne = Feuil5.Range("A500000").End(xlUp).Row + 1
 
    'On Désactive le rafraichissement de l'écran
    Application.ScreenUpdating = False
    'On teste si le nom de l'employé a été saisi
    If Me.TextBox15 = "" Then
        Me.lblMessage = "Vous n'avez pas...

fronck

XLDnaute Junior
Bonjour,
Cà serait mieux avec un fichier.
Je vous laisse gérér la feuille dans le code.
VB:
Dim i% 'declar.variable à mettre en 1ére ligne
For i=2 to DerniereLigne
if feuillx.range("A"&i).value=me.textbox15.value then
[FONT=Calibri]Sheets("feuillx").activate
Range(Cells(i, 1), Cells(i, 22)).Select 'supress ligne de col 1 à 22
            Selection.Delete Shift:=xlUp [/FONT]
next i
Dernière chose, un enregistrement de macro par "développeur" vous donne le code.
Cdt
 
Dernière édition:

Isabellisa

XLDnaute Nouveau
Bonjour Fronck,

Je comprend la déclaration des variables, mais là je ne comprend pas, mon cerveau semble être fatigué, alors j'ai fait une copie de l'original (non terminé et erreurs que je dois corriger) sans mes employés. Donc, une fois l'employé transféré dans les départs (Feuil5) qu'il s'efface de ma base de données shData (Source).


Merci d'avance, j'aime l'entraide qu'on retrouve ici!
 

Pièces jointes

  • Gestionnaire du personnel.xlsm
    598.8 KB · Affichages: 7

fronck

XLDnaute Junior
J'ai enlevé le formulaire de connection qui plantait Excel si on ne met pas un mdp correcte.
-Il y a pas d'onglet employés qui s'appelle shData.
-La Feuil1 s'appelle "Maladie" et y'a pas d'employés dedans.
j'aimerais avoir un code VBA qui fait qu'en cliquant sur mon bouton qui fait le transfert,
Il n'y a pas de bouton "transfert" sur les 14 boutons du menu.
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@Isabellisa

Si j'ai bien compris la demande sur la base du code du post# 1

VB:
'******************************************************************************
'Procédure permettant d'enregistrer dans les départs l'employé qui nous a quitté
'******************************************************************************

Private Sub btnAjouter_Click()
    'On calcule le nombre de ligne dans les départs
    Dim DerniereLigne As Integer
    DerniereLigne = Feuil5.Range("A500000").End(xlUp).Row + 1
 
    'On Désactive le rafraichissement de l'écran
    Application.ScreenUpdating = False
    'On teste si le nom de l'employé a été saisi
    If Me.TextBox15 = "" Then
        Me.lblMessage = "Vous n'avez pas saisie le nom et le prénom de l'employé qui nous a quitté"
    Else
      Feuil5.Cells(DerniereLigne, 1) = Me.TextBox15
      Feuil5.Cells(DerniereLigne, 2) = Me.TextBox16
      Feuil5.Cells(DerniereLigne, 3) = Me.TextBox29
      Feuil5.Cells(DerniereLigne, 4) = Me.TextBox30
      Feuil5.Cells(DerniereLigne, 5) = Me.ComboBox12
      Feuil5.Cells(DerniereLigne, 6) = Me.TextBox17
      Feuil5.Cells(DerniereLigne, 7) = Me.TextBox20
      Feuil5.Cells(DerniereLigne, 8) = Me.ComboBox5
      Feuil5.Cells(DerniereLigne, 9) = Me.TextBox28
      Feuil5.Cells(DerniereLigne, 10) = Me.ComboBox6
      Feuil5.Cells(DerniereLigne, 11) = Me.TextBox8
      Feuil5.Cells(DerniereLigne, 12) = Me.TextBox11
      Feuil5.Cells(DerniereLigne, 13) = Me.TextBox12
      Feuil5.Cells(DerniereLigne, 14) = Me.TextBox26
      Feuil5.Cells(DerniereLigne, 15) = Me.ComboBox7
      Feuil5.Cells(DerniereLigne, 16) = Me.TextBox8
      Feuil5.Cells(DerniereLigne, 17) = Me.TextBox19
      Feuil5.Cells(DerniereLigne, 18) = Me.TextBox10
      Feuil5.Cells(DerniereLigne, 19) = Me.TextBox18
      Feuil5.Cells(DerniereLigne, 20) = Me.TextBox13
      Feuil5.Cells(DerniereLigne, 21) = Me.TextBox22
      Feuil5.Cells(DerniereLigne, 22) = Me.TextBox21
        
      If Me.CheckBox2 = True Then
          Feuil5.Cells(DerniereLigne, 23) = Me.TextBox16 & " " & Me.TextBox15
      Else
          Feuil5.Cells(DerniereLigne, 23) = "Image vide"
      End If
      
      shMenu.Range("F5:AD5").ClearContents
      Unload Me
      MsgBox "Votre employé à bien été enregistré dans les départs et supprimé de la liste d'employés.", vbOKOnly + vbInformation, "CONFIRMATION SAUVEGARDE"
    End If

    '**** C'est ici la suppression de l'employé dans la feuille source shData
    Dim VarId$, j%
    VarId = Me.TextBox16 & " " & Me.TextBox15
    For j = 3 To shData.Range("A" & Rows.Count).End(xlUp).Row
        If shData.Range("B" & j) & " " & shData.Range("A" & j) = VarId Then
              shData.Rows(j).Delete
              Exit Sub
        End If
    Next j
End Sub

*A noter que le code du post #1 est différent de celui qui est dans le fichier !!!!

Merci de ton retour

@Phil69970
 

Isabellisa

XLDnaute Nouveau
J'ai enlevé le formulaire de connection qui plantait Excel si on ne met pas un mdp correcte.
-Il y a pas d'onglet employés qui s'appelle shData.
-La Feuil1 s'appelle "Maladie" et y'a pas d'employés dedans.

Il n'y a pas de bouton "transfert" sur les 14 boutons du menu.
J'avoue qu'il manque quelques infos. J'ai un bouton dans le menu qui s'appelle "Ajout départs d'employés" celui-ci ouvre un userform. On recherche un employé, une fois les infos affichées dans le userform, en cliquant sur le crochet, les infos se transfèrent dans les départs. J'aimerais, que toujours en cliquant sur ce même crochet, il supprime la ligne dans la feuille qui s'appelle source (dans le code pris sur internet, il l'appelle shData(Source)). Je n'ai mis qu'un employé fictif sans détails qui s'appelle Georges De La Jungle.

Merci d'avance et j'espère avoir été plus claire! ;)
 

Isabellisa

XLDnaute Nouveau
Bonjour à tous

@Isabellisa

Si j'ai bien compris la demande sur la base du code du post# 1

VB:
'******************************************************************************
'Procédure permettant d'enregistrer dans les départs l'employé qui nous a quitté
'******************************************************************************

Private Sub btnAjouter_Click()
    'On calcule le nombre de ligne dans les départs
    Dim DerniereLigne As Integer
    DerniereLigne = Feuil5.Range("A500000").End(xlUp).Row + 1
 
    'On Désactive le rafraichissement de l'écran
    Application.ScreenUpdating = False
    'On teste si le nom de l'employé a été saisi
    If Me.TextBox15 = "" Then
        Me.lblMessage = "Vous n'avez pas saisie le nom et le prénom de l'employé qui nous a quitté"
    Else
      Feuil5.Cells(DerniereLigne, 1) = Me.TextBox15
      Feuil5.Cells(DerniereLigne, 2) = Me.TextBox16
      Feuil5.Cells(DerniereLigne, 3) = Me.TextBox29
      Feuil5.Cells(DerniereLigne, 4) = Me.TextBox30
      Feuil5.Cells(DerniereLigne, 5) = Me.ComboBox12
      Feuil5.Cells(DerniereLigne, 6) = Me.TextBox17
      Feuil5.Cells(DerniereLigne, 7) = Me.TextBox20
      Feuil5.Cells(DerniereLigne, 8) = Me.ComboBox5
      Feuil5.Cells(DerniereLigne, 9) = Me.TextBox28
      Feuil5.Cells(DerniereLigne, 10) = Me.ComboBox6
      Feuil5.Cells(DerniereLigne, 11) = Me.TextBox8
      Feuil5.Cells(DerniereLigne, 12) = Me.TextBox11
      Feuil5.Cells(DerniereLigne, 13) = Me.TextBox12
      Feuil5.Cells(DerniereLigne, 14) = Me.TextBox26
      Feuil5.Cells(DerniereLigne, 15) = Me.ComboBox7
      Feuil5.Cells(DerniereLigne, 16) = Me.TextBox8
      Feuil5.Cells(DerniereLigne, 17) = Me.TextBox19
      Feuil5.Cells(DerniereLigne, 18) = Me.TextBox10
      Feuil5.Cells(DerniereLigne, 19) = Me.TextBox18
      Feuil5.Cells(DerniereLigne, 20) = Me.TextBox13
      Feuil5.Cells(DerniereLigne, 21) = Me.TextBox22
      Feuil5.Cells(DerniereLigne, 22) = Me.TextBox21
       
      If Me.CheckBox2 = True Then
          Feuil5.Cells(DerniereLigne, 23) = Me.TextBox16 & " " & Me.TextBox15
      Else
          Feuil5.Cells(DerniereLigne, 23) = "Image vide"
      End If
     
      shMenu.Range("F5:AD5").ClearContents
      Unload Me
      MsgBox "Votre employé à bien été enregistré dans les départs et supprimé de la liste d'employés.", vbOKOnly + vbInformation, "CONFIRMATION SAUVEGARDE"
    End If

    '**** C'est ici la suppression de l'employé dans la feuille source shData
    Dim VarId$, j%
    VarId = Me.TextBox16 & " " & Me.TextBox15
    For j = 3 To shData.Range("A" & Rows.Count).End(xlUp).Row
        If shData.Range("B" & j) & " " & shData.Range("A" & j) = VarId Then
              shData.Rows(j).Delete
              Exit Sub
        End If
    Next j
End Sub

*A noter que le code du post #1 est différent de celui qui est dans le fichier !!!!

Merci de ton retour

@Phil69970
oui, je sais, j'avais rajouté des trucs avant de poster le fichier ;)


Milles merci ça fonctionne hyper bien!! Vous me sauvez la vie! câlins

Isabellisa
 

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83