Sub Nom_CP()
Dim nomcp As String 'déclare la variable nomcp
Dim naturecp As String 'déclare la variable naturecp
Dim matricule As String 'déclare la variable matriculecp
Dim NombreCP As Integer 'déclare la variable Nombrep
Dim ddate As String 'déclare la variable ddate (Début de la Date)
Dim ddate2 As String 'déclare la variable ddate (Début de la Date2)
Dim fdate As String 'déclare la variable fdate (Fin de la Date)
Dim fd As String 'déclare la variable fd (Fouchette de Date)
'sécurité : si la sélection n'est pas dans les colonnes 4 ou 7, sort de la procédure
If ActiveCell.Column = 4 Or ActiveCell.Column = 7 Then
'comme la boucle de ton code ne servait à rien j'ai aussi modifié le début
Select Case ActiveCell.Interior.ColorIndex
Case 3
nomcp = "Mr W"
matricule = "2222222"
naturecp = "CP"
NombreCP = Selection.Cells.Count
Case 7
nomcp = "Mr X"
matricule = "000000"
naturecp = "RTT"
NombreCP = Selection.Cells.Count
Case 13
nomcp = "Mr Y"
matricule = "11111"
naturecp = "RTT"
NombreCP = Selection.Cells.Count
End Select
'*********************
'placement des données
'*********************
With Sheets("Feuil2")
.Range("C5").Value = nomcp
.Range("C10").Value = naturecp
.Range("C15").Value = matricule
.Range("C20").Value = NombreCP
'************************
'code pour la/les date(s)
'************************
' définit la variable fdate
Select Case ActiveCell.Column 'en fonction de la colonne
Case 4 'colonne 4
Select Case ActiveCell.Row 'en fonction de la ligne
Case 2 To 32 'de 2 à 32
fdate = "01/2008"
Case 34 To 64 'de 34 à 64
fdate = "07/2008"
End Select
Case 7 'colonne 7
Select Case ActiveCell.Row
Case 2 To 32 'de 2 à 32
fdate = "02/2008"
Case 34 To 64 'de 34 à 64
fdate = "08/2008"
End Select
End Select
' définit la variable ddate
If ActiveCell.Offset(0, -2).Value < 10 Then
ddate = "0" & CStr(ActiveCell.Offset(0, -2).Value) & "/"
Else
ddate = CStr(ActiveCell.Offset(0, -2).Value) & "/"
End If
ActiveCell.Offset(Selection.Cells.Count - 1, 0).Activate 'active la dernière cellule de la sélection
' définit la variable ddate2
If ActiveCell.Offset(0, -2).Value < 10 Then
ddate2 = "0" & CStr(ActiveCell.Offset(0, -2).Value) & "/"
Else
ddate2 = CStr(ActiveCell.Offset(0, -2).Value) & "/"
End If
' définit la variable fd
If Selection.Cells.Count = 1 Then 'si une seule cellule sélectionnée
fd = "Le " & ddate & fdate
Else 'sinon
fd = "Du " & ddate & fdate & " au " & ddate2 & fdate
End If
.Range("C25").Value = fd 'place la donnée
End With
End If
End Sub