Re,
Meva la protection de la structure me complique trop la tâche pour le code. Je n'y arrive pas. Je te propose donc de la supprimer.
J'ai mis en page l'onglet FICHE APPEL avec des cellulesfusionnées et formatée et avec une protection (sans mot de passe) pour te permettre de remplir cette fiche plus vite.
les codes :
Sub effacer_donnees()
Dim OS As Worksheet 'déclare la variable OS (onglet Source)
Set OS = Worksheets("FICHE APPEL") 'définit l'onglet source OS
OS.Activate 'active l'onglet OS
OS.Unprotect 'déprotège l'onglet OS
Range("C7,G7,C9,C11:G11,C13:G13,C17,C19:G26").ClearContents 'efface le contenu des cellules
Range("C7").Select 'sélectionne la cellule C7
OS.Protect 'protège l'onglet
End Sub
Sub stocker()
Dim OS As Worksheet 'déclare la variable OS (onglet Source)
Dim OM As Worksheet 'déclare la variable OM (Onglet Modèle)
Dim OD As Worksheet 'déclare la variable OS (onglet Destination)
Dim LR As Integer 'déclare la variable LR (Ligne de Référence)
Dim DL As Long 'déclare la variable DL (Date Long)
Set OS = Worksheets("FICHE APPEL") 'définit l'onglet source OS
Set OM = Worksheets("LISTE APPELS") 'définit l'onglet modèle OM
DL = CLng(DateSerial(Year(OS.Range("G7")), Month(OS.Range("G7")), Day(OS.Range("G7"))))
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set OD = Worksheets("LISTE APPELS_" & Format(CDate(DL), "dd_mm_yyyy")) 'définit l'onglet destination OD (génere une erreur si ce onglet n'existe pas)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
OM.Copy after:=Sheets(Sheets.Count) 'copy l'onglet modèle en dernière position
Set OD = ActiveSheet 'définit l'onglet destination OD
OD.Name = "LISTE APPELS_" & Format(CDate(DL), "dd_mm_yyyy") 'renom el'onglet OD
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
LR = OD.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la ligne de référence LR
OD.Cells(LR, "A").Value = OS.Range("C7").Value 'récupère l'Agent
OD.Cells(LR, "B").Value = OS.Range("G7").Value 'récupère la date
OD.Cells(LR, "C").Value = OS.Range("C9").Value 'récupère le numéro d'appel
OD.Cells(LR, "D").Value = OS.Range("C11:G11").Value 'récupère le nom/prénom
OD.Cells(LR, "E").Value = OS.Range("C13:G13").Value 'récupère les coordonnées
OD.Cells(LR, "F").Value = OS.Range("C17").Value 'récupère les coordonnées
OD.Cells(LR, "G").Value = OS.Range("C19:G26").Value 'récupère le descriptif
Call effacer_donnees 'lance la procédure effacer_donnees
End Sub
Comme tu peux t'en rendre compte, je lance la macro Effacer_donnees à la fin de stocker... Tu adapteras...
Le fichier :