Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2012, 12h06   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : décembre 2011
Messages : 45
Points : 11
Points : 11
Par défaut Comparaison de date ( mess.box )

Bonjour a tous ,

J'ai grandement besoin d'aide pour adapter un code VBA, je ne trouve pas la solution a chaque fois , j'ai des erreurs :

en quelques mots :

A l'ouverture de mon classeur , j'aimerai un message box me signalant les dates d'anniversaires a venir de mes clients ( environ 15 jours avant )

J'utilise pour cela la feuille : "Fichier Client"
Dans la colonne E de cette feuille , une fonction calcul le nombre de jour restant avant la date d'anniversaire
La colonne C étant le nom du client
La colonne D étant la date d'anniversaire

A l'ouverture du message box , je voudrais :
Anniversaire de : " Nom du client " le " jour et mois " dans " Nb jour "

Sachant
a :que je n'ai pas toutes les dates d'anniversaires et qu'il peut y en avoir plusieurs avec la même date .
b : j'ai déja a l'ouverture du classeur ce code :

Code :
1
2
3
Private Sub Workbook_Open()
Feuil1.Activate
End Sub
Voici le code que j'essai d'adapter :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Workbook_Open()
  With Sheets("Dates")
    For Each cel In .Range("F2:F" & .[F6550].End(xlUp).Row)
      If cel < 16 Then
        li = cel.Row
        d = Day(cel.Offset(, -3)) & "/" & IIf(Month(cel.Offset(, -3)) < 10, "0" & Month(cel.Offset(, -3)), Month(cel.Offset(, -3))) & "/" & Year(Date)
        If Cells(li, "B") = "Anniversaire" Then T1 = "Anniversaire de " & Cells(li, "A") & ", " & _
           Cells(li, "E") & " le " & d & ", dans " & cel & " jour" & IIf(cel = 1, " !", "s !")
        If Cells(li, "B") = "Fête" Then T1 = "Fête de " & Cells(li, "A") & ", " & " le " & _
           d & ", dans " & cel & " jour" & IIf(cel = 1, "", "s")
        texte = texte & T1 & Chr(10)
        n = n + 1
      End If
    Next
  End With
  If n > 0 Then
    MsgBox texte, , "C'est la fête."
  End If
End Sub

Voila ou j'en suis :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Workbook_Open()
  With Sheets("Fichier Client")
    For Each Cel In .Range("E2:E" & .[E6550].End(xlUp).Row)
      If Cel < 16 Then
        li = Cel.Row
        d = Day(Cel.Offset(, -1)) & "/" & IIf(Month(Cel.Offset(, -1)) < 10, "0" & Month(Cel.Offset(, -1)), Month(Cel.Offset(, -1))) & "/" & Year(Date)
        If Cells(li, "C") = " " Then T1 = "Anniversaire de " & Cells(li, "C") & " le " & d & ", dans " & Cel & " jour" & IIf(Cel = 1, " !", "s !")
        texte = texte & T1 & Chr(10)
        n = n + 1
      End If
    Next
  End With
  If n > 0 Then
    MsgBox texte, , "C'est L'Anniversaire de : "
  End If
End Sub


Merci de votre aide
francky62000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 14h12   #2
Membre du Club
 
Consultant KPI
Inscription : août 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant KPI

Informations forums :
Inscription : août 2010
Messages : 23
Points : 43
Points : 43
Bonjour,

Essaie avec ça.
L'affichage te donne le nombre de jours restants du plus petit au plus grand nombre

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
Option Explicit
 
Private Sub Workbook_Open()
    Dim II                  As Integer
    Dim noRow               As Long
    Dim firstLine           As Long
    Dim myRange             As Range
    Dim RechAnniversaires   As String
    '
    RechAnniversaires = ""
    '
    With Sheets("Fichier Client")
        '
        ' Pour tous les nombres de jours restants à identifier
        For II = 0 To 16
            '
            ' Recherche d'un Client correspondant
            Set myRange = .Range("E:E").Find(II, LookIn:=xlValues, lookat:=xlWhole)
            If Not myRange Is Nothing Then
                firstLine = myRange.Row
                Do
                    RechAnniversaires = RechAnniversaires _
                                      & .Cells(myRange.Row, 3) & " dans " & myRange _
                                      & " jour" & IIf(II > 1, "s", "") & vbCrLf
                    '
                    ' Recherche d'un autre client correspondant
                    Set myRange = .Range("E:E").FindNext(myRange)
                '
                ' Sortie de boucle si on ne trouve pas de client
                Loop While Not myRange Is Nothing And myRange.Row <> firstLine
            End If
        Next II
        '
        If RechAnniversaires <> "" Then
            MsgBox RechAnniversaires, vbOKOnly, "Anniversaires"
        End If
    End With
End Sub
DeTraX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 15h10   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : décembre 2011
Messages : 45
Points : 11
Points : 11
Je te remercie , c'est exactement ça
Je vais étudier ton code qui n'a plus rien a voir avec celui que j'ai posté
Encore merci
francky62000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h28.


 
 
 
 
Partenaires

Hébergement Web