Sub Macro1()
Dim CTI As Worksheet 'déclare la variable CTI (onglet CTI)
Dim AD As String 'déclare la variable AD (ADresse)
Dim OM As Worksheet 'déclare la variable OM (onglet du Mois)
Dim COL As Byte 'déclare la variable COL (COLonne)
Set CTI = Worksheets("CTI") 'définit l'onglet CTI
Select Case Application.WorksheetFunction.CountA(CTI.Range("O31:P31")) 'agit en fonction du nombre de valeur dans la plage O31:P31
Case 0 'aucune
MsgBox "Données manquantes !" 'message
CTI.Range("O31").Select 'séctionne la cellule O31 de l'onglet CTI
Exit Sub 'sort de la procédure
Case 1 'une seule
AD = IIf(CTI.Range("O31").Value = "", "O31", "P31") 'définit l'adresse AD
MsgBox "Donnée manquante !" 'message
CTI.Range(AD).Select 'séctionne la cellule de l'adresse AD de l'onglet CTI
Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de...
'condition : si "Oui" au message
If MsgBox("Merci de bien vérifier la sélection avant de potentiellement écraser des données importante. Voulez-vous continuer ?", vbYesNo, "ATTENTION !") = vbYes Then
Set OM = Worksheets(Range("O31").Value) 'définit l'onglet OM
COL = Range("P31").Value + 7 'définit la colonne COL
OM.Cells(113, COL).Resize(20, 1).Value = Range("O8:O27").Value 'renvoie les données du critère bleu
OM.Cells(138, COL).Resize(20, 1).Value = Range("P8:P27").Value 'renvoie les données du critère jaune
OM.Cells(163, COL).Resize(20, 1).Value = Range("Q8:Q27").Value 'renvoie les données du critère rouge
OM.Select 'sélectionne l'onglet OM (à supprimer si pas nécesaire)
End If 'fin de la condition
End Sub