VBA : Nommer des plages en fonction de critères définis.

Le
Domi
Bonjour à tous,
J'ai une plage O3:CL3 dans laquelle figurent des dates.
Sous chaque date, dans la plage O4:CL4 figure des lettres (2 possibles :
"S"ou "V").

Je voudrais attribuer par VBA un nom à chaque plage sous chaque date (entre
les lignes 7 et xx) xx étant la dernière ligne de la colonne A contenant une
valeur.
Le nom étant fonction de la date et de la lettre, je donne dessous un
exemple possible de nom mais je peux accepter autre chose qui soit
"parlant".

Si la date appartient au mois en cours (Mai 2008 en ce moment) et lettre = S
nom=MEC_S (Mois En Cours_S)
Si la date appartient au mois en cours (Mai 2008 en ce moment) et lettre = V
nom=MEC_S (Mois En Cours_V)
Si la date appartient au mois -1 (Avril 2008) et lettre = S
nom=MM1_S (Mois Moins 1_S)
Si la date appartient au mois -1 (Avril 2008) et lettre = V
nom=MM1_V (Mois Moins 1_V)
Si la date appartient au mois -2 (Mars 2008) et lettre = S
nom=MM2_S (Mois Moins 2_S)
Si la date appartient au mois -2 (Mars2008) et lettre = V
nom=MM2_V (Mois Moins 2_V)
Etc.
Si la date appartient au mois +1 (Juin 2008) et lettre = S
nom=MP1_S (Mois Plus 1_S)
Si la date appartient au mois +1 (Juin 2008) et lettre = V
nom=MP1_V (Mois Plus 1_V)
Si la date appartient au mois +2 (Juillet 2008) et lettre = S
nom=MP2_S (Mois Plus 2_S)
Si la date appartient au mois +2 (Juillet 2008) et lettre = V
nom=MP2_V (Mois Plus 2_V)
Etc.

Quelqu'un aurait-il un code "magique" à me proposer ?
Merci pour votre aide ;o)
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe Mathon
Le #6731581
Salut Domi,

The wizard is here:
******************************
******************************
Sub Macro1()
Dim DifMonth
Dim nom

' Compare the date in the cell with the curent date
DifMonth = DateDiff("m", Date, Cells(3, 1))

' If the date in the cell if before this month
If (DifMonth < 0) Then
nom = "MM_" & DifMonth * -1 & Cells(4, 1)

' If the date in the cell is this month
ElseIf (DifMonth = 0) Then
nom = "MEC_" & Cells(4, 1)

' If the date in the cell is after this month
Else
nom = "MP" & DifMonth & "_" & Cells(4, 1)
End If
End Sub
******************************
******************************

Il ne te reste qu'a definir une boucle pour traiter les cellules aue tu veut
et appliquer la valeur a la cellule que tu veut.

Christophe Mathon
Domi
Le #6732681
Merci beaucoup, je teste dès que possible ;o)
Domi

"Christophe Mathon"
Salut Domi,

The wizard is here:
******************************
******************************
Sub Macro1()
Dim DifMonth
Dim nom

' Compare the date in the cell with the curent date
DifMonth = DateDiff("m", Date, Cells(3, 1))

' If the date in the cell if before this month
If (DifMonth < 0) Then
nom = "MM_" & DifMonth * -1 & Cells(4, 1)

' If the date in the cell is this month
ElseIf (DifMonth = 0) Then
nom = "MEC_" & Cells(4, 1)

' If the date in the cell is after this month
Else
nom = "MP" & DifMonth & "_" & Cells(4, 1)
End If
End Sub
******************************
******************************

Il ne te reste qu'a definir une boucle pour traiter les cellules aue tu
veut et appliquer la valeur a la cellule que tu veut.

Christophe Mathon



Publicité
Poster une réponse
Anonyme