Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
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)

2 réponses

Avatar
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
Avatar
Domi
Merci beaucoup, je teste dès que possible ;o)
Domi

"Christophe Mathon" a écrit dans le message de news:

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