RESOLU Macro calcul d'une date en fonction d'un nom

Lander

XLDnaute Nouveau
Bonjour à tous

Je cherche à réaliser la macro suivante mais sans succès
sur un tableau:
En A une liste de nom
si j'ai Albert ou Pierre ou Lionel je dois exécuter une macro

En B j'ai les dates de création du genre "30/01/2016"
Je dois ecrire en E de la même ligne la date limite

si (Ai)=Albert then (Ei) = 360+(Bi) (la date en B + 360 jours)
si (Ai)=Pierre then (Ei) = 180+(Bi) (la date en B + 180 jours )
si (Ai)=Lionel then (Ei) = 180+(Bi)
Quelqu'un aurait un début de piste ?

Merci et très bon WE à tous
 
Dernière modification par un modérateur:

ROGER2327

XLDnaute Barbatruc
Re : Macro calcul d'une date en fonction d'un nom

Bonjour Lander.


Un début de piste, à mettre dans le code de la feuille concernée :​
Code:
Sub toto()
Dim Cel As Range, Noms As Range
  Set Noms = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
  If Noms.Count > 1 Then
    Application.EnableEvents = False
    For Each Cel In Noms.Cells
      If IsDate(Cel.Offset(0, 1)) Then
        Select Case Cel.Value
        Case "Albert": Cel.Offset(0, 4).Value = 360 + Cel.Offset(0, 1).Value
        Case "Pierre": Cel.Offset(0, 4).Value = 180 + Cel.Offset(0, 1).Value
        Case "Lionel": Cel.Offset(0, 4).Value = 180 + Cel.Offset(0, 1).Value
        Case Else: Cel.Offset(0, 4).Value = Empty
        End Select
      End If
    Next
    Application.EnableEvents = True
  End If
End Sub


Bonne journée.


ℝOGER2327
#8177


Jeudi 19 Décervelage 143 (Saint et Sainte Cartouche, vétérinaires - fête Suprême Quarte)
26 Nivôse An CCXXIV, 5,0481h - étain
2016-W02-6T12:06:55Z
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Macro calcul d'une date en fonction d'un nom

Suite...


S'il y a beaucoup de lignes à traiter :​
Code:
Sub tata()
Dim Noms As Range, i&, v(), w()
  Set Noms = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, 1))
  If Noms.Rows.Count > 1 Then
    v = Noms.Value
    ReDim w(2 To UBound(v), 0)
    For i = 2 To UBound(v)
      If IsDate(v(i, 2)) Then
        Select Case v(i, 1)
        Case "Albert": w(i, 0) = 360 + v(i, 2)
        Case "Pierre": w(i, 0) = 180 + v(i, 2)
        Case "Lionel": w(i, 0) = 180 + v(i, 2)
        End Select
      End If
    Next
    [E2].Resize(UBound(w) - 1, 1).Value = w
  End If
End Sub


ℝOGER2327
#8178


Jeudi 19 Décervelage 143 (Saint et Sainte Cartouche, vétérinaires - fête Suprême Quarte)
26 Nivôse An CCXXIV, 5,1694h - étain
2016-W02-6T12:24:24Z
 

Discussions similaires

Statistiques des forums

Discussions
314 222
Messages
2 107 481
Membres
109 838
dernier inscrit
Mouh41