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 IfJusqu'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 SubToujours 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 IfDans 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 SubBonsoir 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.
@+.