Supprimer une photo en même temps qu'une ligne de données

Bonsoir ou rebonsoir à tous,

Dans un formulaire, j'utilise ce code pour afficher une photo par rapport au numéro contenu dans mon TextBox SAP :

Dim Repertoire As String

Repertoire = ThisWorkbook.Path
    If Dir(Repertoire & "\Photos" & "\" & Me.SAP & ".jpg") <> "" Then
        Me.Image1.Picture = LoadPicture(Repertoire & "\Photos" & "\" & Me.SAP & ".jpg")
    Else
        Me.Image1.Picture = LoadPicture(Repertoire & "\" & "transparent.gif")
    End If

Jusqu'ici pas de problème.

Ce code me permet de supprimer une ligne de ma feuille de données via mon formulaire :

Private Sub Supp_Ligne_Click() 'quand on clique sur le bouton Supp_Ligne
Dim Reponse As Integer 'on déclare la variable Reponse
    If Nom.ListIndex > -1 Then 'si le ComboBox Nom n'est pas vide
    Rows(Nom.ListIndex + 5).Select 'on sélectionne la ligne correspondant à la valeur du ComboBox Nom dans la feuille
    End If 'fin de la condition

Reponse = MsgBox("Vous êtes sur le point de supprimer toutes les données concernant le :" & vbNewLine & Modification.Grade.Value & " " & Modification.Nom.Value & ". Etes-vous sûr de vouloir continuer ?", vbYesNo + vbExclamation, "Confirmation de suppression") 'on affiche le message nécessitant une réponse de la part de l'utilisateur
Select Case Reponse 'suivant le choix le l'utilisateur

    Case vbYes 'si l'utilisateur clique sur "Oui"
    Selection.Delete 'on supprime la ligne sélectionnée dans la feuille
    Range("B5").Select 'on sélectionne la cellule B5 de la feuille
    Call Initialise_Noms 'on réinitialise l'alimentation du ComboBox Nom
    Me.Nom.ListIndex = Me.Nom.ListIndex + ((Ligne - 5) + 1) 'on affiche la valeur suivante
    Me.Nom.SetFocus 'on remet le focus dans le ComboBox Nom

    Case vbNo 'si l'utilisateur clique sur "Non"
    Range("B5").Select 'on sélectionne la cellule B5 de la feuille
    Me.Nom.SetFocus 'on remet le focus dans le ComboBox Nom
End Select 'fin du choix
End Sub

Toujours pas de problème.

Ce que je souhaite en revanche, c'est de supprimer la photo correspondante (nommée comme la valeur de mon TextBox SAP) dans le dossier Photos.

Quelle ligne de code dois-je rajouter à l'évènement vbYes pour arriver à mes fins ?

Merci d'avance et bonne soirée.

@+.

Bonsoir

Je n'aime pas trop donner des codes pour supprimer des fichiers

A tester

Dans la macro pour charger l'image dans ton Userform rajoutes la ligne surlignée

Dim Repertoire As String

  Repertoire = ThisWorkbook.Path
  If Dir(Repertoire & "\Photos" & "\" & Me.SAP & ".jpg") <> "" Then
    Me.Image1.Picture = LoadPicture(Repertoire & "\Photos" & "\" & Me.SAP & ".jpg")
    Me.Image1.Tag = Me.SAP & ".jpg"
  Else
    Me.Image1.Picture = LoadPicture(Repertoire & "\" & "transparent.gif")
  End If

Dans ta macro de suppression

A mon avis un défaut de conception

Si tu n'avais rien choisi dans Me.Nom, bien sur tu n'affichais pas la ligne, mais tu posais la question pour la supprimer

Pour éviter cela j'ai déplacé le End If

Macro telle quelle sans aucun test

Private Sub Supp_Ligne_Click()        'quand on clique sur le bouton Supp_Ligne
Dim Reponse As Integer                'on déclare la variable Reponse

  If Nom.ListIndex > -1 Then          'si le ComboBox Nom n'est pas vide
    Rows(Nom.ListIndex + 5).Select    'on sélectionne la ligne correspondant à la valeur du ComboBox Nom dans la feuille

    Reponse = MsgBox("Vous êtes sur le point de supprimer toutes les données concernant le :" & vbNewLine & Modification.Grade.Value & " " & Modification.Nom.Value & ". Etes-vous sûr de vouloir continuer ?", vbYesNo + vbExclamation, "Confirmation de suppression") 'on affiche le message nécessitant une réponse de la part de l'utilisateur
    Select Case Reponse             'suivant le choix le l'utilisateur

      Case vbYes                    'si l'utilisateur clique sur "Oui"
        If Me.Image1.Tag <> "" Then
          Kill ThisWorkbook.Path & "\Photos" & "\" & Me.Image1.Tag
        End If
        Selection.Delete            'on supprime la ligne sélectionnée dans la feuille
        Range("B5").Select          'on sélectionne la cellule B5 de la feuille
        Call Initialise_Noms        'on réinitialise l'alimentation du ComboBox Nom
        Me.Nom.ListIndex = Me.Nom.ListIndex + ((Ligne - 5) + 1) 'on affiche la valeur suivante
        Me.Nom.SetFocus             'on remet le focus dans le ComboBox Nom

      Case vbNo                     'si l'utilisateur clique sur "Non"
        Range("B5").Select          'on sélectionne la cellule B5 de la feuille
        Me.Nom.SetFocus             'on remet le focus dans le ComboBox Nom
    End Select                      'fin du choix
  End If                            'fin de la condition

End Sub

Bonsoir Banzai,

Merci pour ta réponse que je vais éclaircir si tu veux bien :

Je n'aime pas trop donner des codes pour supprimer des fichiers

:

J'en suis bien conscient mais c'est un fichier qui est sur un réseau et au fur et à mesure que les fichiers obsolètes s'accumulent, il faut bien de temps en temps les nettoyer mais y pense t'on toutefois : pas forcément d'où l'idée de le faire automatiquement.

Dans ta macro de suppression

A mon avis un défaut de conception

Si tu n'avais rien choisi dans Me.Nom, bien sur tu n'affichais pas la ligne, mais tu posais la question pour la supprimer

Pour éviter cela j'ai déplacé le End If

:

Je ne l'avais pas envisager sous cet angle mais j'avais quand même prévu le cas en rendant invisible le bouton qui lance la suppression si mon ComboBox Nom est vide mais merci quand même pour la correction.

Pour le reste, je testes et je te redis demain dans la journée.

Merci encore pour ton intervention et bonne soirée ou bonne nuit.

@+.

Bonjour Banzai, à tous,

La suppression avec le tag n'a pas fonctionné.

J'ai adapté comme suit :

Kill (Repertoire & "\Photos" & "\" & Me.SAP & ".jpg")

et la photo est bien supprimée du dossier.

Il ne reste plus qu'à ajouter une condition s'il n'y a pas d'image correspondante dans le dossier Photos.

Peux-t'on envisager la confirmation de la suppression par un mot de passe par exemple : cela ferait une sécurité supplémentaire ? Où serait-ce trop lourd à mettre en place ?

Bon après-midi.

@+.

Bonjour

Bizarre que cela ne passe pas pas par le tag

Mais sans fichier pas facile à chercher le pourquoi du comment

criscris11 a écrit :

Peux-t'on envisager la confirmation de la suppression par un mot de passe par exemple

Je pense que oui

lors de la réponse à la question de suppression demander (via Userform ou inputbox ) un mot de passe et en fonction du résultat agir en conséquence

Re,

Je viens de reprendre tout ton code donné hier soir et ce coup-ci, cela a l'air de bien fonctionner : peut-être le End If que tu as déplacé que je n'avais pas repris.

Un problème de résolu. Maintenant, je n'ai plus qu'à plancher sur la demande de mot de passe.

Merci et bon après-midi.

@+.

Rechercher des sujets similaires à "supprimer photo meme temps ligne donnees"