Find et ClearContents d'une plage de cellules voisines
Bonjour à tous,
J'ai récemment décidé de me lancer dans le vba pour gérer des listes de patients (inscrits à des ateliers) pour simplifier la vie de mes collègues. Seulement, je bloque à un endroit.
Intérêt de mon excel : inscrire les patients aux ateliers qu'ils souhaitent, selon les places dispos, avec une liste d'attente si atelier complet.
ET Supprimer un patient de tous ses ateliers lorsqu'il quitte l'hôpital. Et c'est là mon problème.
Fichier dispo pour visualiser sa présentation
Pour cela j'ai crée un userform où on rentre nom + prénom et avec la fonction find je lui demande de trouver le rang avec ces 2 textboxs qui concordent. Okay pour supprimer la ligne entière sur ma première feuille (inscription). Sauf que pour mes autres feuilles, mes feuilles ateliers, je ne peux pas supprimer la ligne entière car il y a d'autres données sur le reste de la ligne. Il faudrait SUPPRIMER LE CONTENU DES 5 CELLULES VOISINES DE CE QUE TROUVE FIND. Mais je n'arrive pas à écrire cette partie avec clearcontents ou autre
Voilà, si quelqu'un a une idée...
Merci !
Ici mon code qui marche avec DELETE
Private Sub CommandButton1_Click()
'Nommer mes valeurs
Dim adresse_nom As Range
Dim adresse_prenom As Range
nom = TextBox1.Value
prenom = TextBox2.Value
derniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
'Supprimer la ligne sur feuille Inscription
Sheets("Inscription").Activate
Set adresse_nom = Range("A1:A1000").Find(nom, lookat:=xlWhole)
Set adresse_prenom = Range("B1:B1000").Find(prenom, lookat:=xlWhole)
If adresse_nom Is Nothing Or adresse_prenom Is Nothing Then
MsgBox ("Êtes vous sur de l'orthographe du nom ou du prénom?")
Else
If adresse_nom.Row <> adresse_prenom.Row Then
MsgBox ("Êtes vous sur de l'orthographe du nom ou du prénom ?")
End If
If adresse_nom.Row = adresse_prenom.Row Then
Rows(adresse_nom.Row).Delete
'ICI OK DE SUPP LA LIGNE ENTIERE
MsgBox "Patient supprimé"
End If
End If
'Est-ce que ce patient était en collage ?
Sheets("Collage").Activate
Set adresse_nom = Range("A1:A1000").Find(nom, lookat:=xlWhole)
Set adresse_prenom = Range("B1:B1000").Find(prenom, lookat:=xlWhole)
If adresse_nom.Row = adresse_prenom.Row Then
Rows(adresse_nom.Row).Delete
'ICI JE NE VEUX PAS DELETE MA LIGNE MAIS SEULEMENT 5 CELLULES (colonnes A à E)
MsgBox "Patient retiré de l'atelier collage"
Sheets("Modelage").Activate
End If
'Est-ce que ce patient était en liste d'attente de collage ?
If adresse_nom Is Nothing Or adresse_prenom Is Nothing Then
Set adresse_nom = Range("G1:G1000").Find(nom, lookat:=xlWhole)
Set adresse_prenom = Range("H1:H1000").Find(prenom, lookat:=xlWhole)
If adresse_nom.Row = adresse_prenom.Row Then
Rows(adresse_nom.Row).Delete
'ICI JE NE VEUX PAS DELETE MA LIGNE MAIS SEULEMENT 5 CELLULES (colonnes G à K)
MsgBox "Patient retiré de l'atelier collage"
Sheets("Modelage").Activate
End If
End If
End Sub
Bonjour Séraphine et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)
Pour ce que vous souhaitez, vous pouvez redimensionner la plage trouvée
If adresse_nom.Row = adresse_prenom.Row Then
adresse_nom.Resize(1, 5).ClearContents
MsgBox "Patient retiré de l'atelier collage"
Sheets("Modelage").Activate
End IfMerci de votre participation
Cordialement
Bonjour Bruno !
Merci beaucoup pour votre réponse qui semble en effet bien régler mon problème !
Je vous souhaite une très belle journée.