IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment comparer des lignes et colonnes d'un tableau avec la date du jour


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Dessinateur Indus
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Dessinateur Indus
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut Comment comparer des lignes et colonnes d'un tableau avec la date du jour
    Bonjour,

    Je suis novice dans la programmation et surtout avec VBA.
    Je souhaite créer une macro pour qu'à l'ouverture de mon tableau s'affiche (msgbox) le prochain anniversaire.

    Mon tableau se compose des mois (en chaine de caractères) dans les colonnes et des jours (en nombres) dans les lignes. En gros un bon calendrier standard ^^.
    Je sais comment récupérer la jour et le mois de la date du jour et comment transformer le mois en cours en chaine de caractères (ex: 10 => OCTOBRE).
    Ce que je n'arrive pas à trouver sur les forums c'est comment sélectionner la bonne colonne du mois en cours, et aller jusqu'à la prochaine ligne non vide pour afficher le nom de la personnes dans la cellule dans un msgbox ?

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 590
    Par défaut
    Bonjour

    Met au moins une copie d'écran montant la structure où sont visibles lettres des colonnes et numéros de ligne.

    A noter qu'il n'est peut-être pas utile de faire une macro pour cela : une simple cellule peut afficher cela...

    A noter aussi qu'il est préférable de mettre des dates complètes dans les calendriers, même si on affichr le texte du mois ou du jour en toutes lettres. Cela facilite nettement l'exploitation d'une part, la réutilisation d'une année à l'autre du modèle d'autre part

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Dessinateur Indus
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Dessinateur Indus
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut
    Nom : 2018-10-14.png
Affichages : 465
Taille : 176,2 Ko

    Enfaite c'est juste pr afficher la prochaine personne qui fête son anniversaire (ex sur la capture : le prochain doit etre Georges) à l'ouverture du tableau.
    Du coup normalement pas besoin de récupérer l'année.


    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une procédure événementielle Open() par rapport à ton tableau qui commence en B2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    40
    41
    42
    43
     
    Private Sub Workbook_Open()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Tbl() As String
        Dim Mois As String
        Dim I As Integer
        Dim Chaine As String
     
        'extrait le nom du mois de la date
        Mois = UCase(MonthName(Month(Date), False))
     
        'défini la plage de recherche sur la ligne 2 à partir de la colonne B
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(2, 2), .Cells(2, .Columns.Count).End(xlToLeft)): End With
     
        'recherche la cellule correspondante
        Set Cel = Plage.Find(Mois, , xlValues, xlWhole)
     
        'redéfini la plage sur la bonne colonne
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(3, Cel.Column + 1), .Cells(33, Cel.Column + 1)): End With
     
        For Each Cel In Plage
     
            If Cel.Value <> "" Then
     
                I = I + 1: ReDim Preserve Tbl(1 To 2, 1 To I)
                Tbl(1, I) = Cel.Value 'nom de la personne
                Tbl(2, I) = Cel.Offset(, -1).Value 'le jour
     
            End If
     
        Next Cel
     
        'si initialisé, au moins un nom trouvé donc, affichage
        If Not Not Tbl() Then
     
            For I = 1 To UBound(Tbl, 2): Chaine = Chaine & Tbl(1, I) & " le " & Tbl(2, I) & vbCrLf: Next I
            MsgBox "Ce mois -ci (" & Mois & "), c'est l'anniversaire de :" & vbCrLf & Chaine
     
        End If
     
    End Sub

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Dessinateur Indus
    Inscrit en
    Octobre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Dessinateur Indus
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour votre réponse. en effet c'est ce que je cherchais.
    Je vais essayer de comprendre votre code parce que je suis vraiment novice

    Actuellement j'avais réussi à faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub tAnniv()
     
     
     
    tJour = Day(Date)
    'tMois = UCase(Format(Now(), "MM"))
    tMois = Month(Date)
     
     
    Range("A1").Select
    ActiveCell.Offset(1, tMois * 2).Select
    ActiveCell.Offset(tJour, 0).Select
    ActiveCell.Offset(0, 1).Select
    tGens = ActiveCell.Value
     
    If tGens = Empty Then
     
        'continu à la cellule suivant
        'jusqu'à trouver cellule pas vide
     
    Else
       MsgBox tJour & " " & "-" & " " & tGens
     
    End If
     
     
    End Sub

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 590
    Par défaut
    Bonjour

    Par formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(B2:Z33;EQUIV(JOUR(AUJOURDHUI());B2:B33;0);EQUIV(TEXTE(AUJOURDHUI();"mmmm");$B$2:$Y$2;0)+1)
    Utiliser le format personnalisé ;;;@ pour la cellule

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment effacer des lignes ou colonne de vector 2D ?
    Par membreComplexe12 dans le forum C++
    Réponses: 11
    Dernier message: 17/02/2011, 14h35
  2. Comment mettre des lignes en colonnes?
    Par flostralian dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2009, 21h34
  3. ajouter des lignes et colonnes dans un tableau
    Par sky88 dans le forum Débuter
    Réponses: 1
    Dernier message: 03/12/2008, 19h04
  4. Réponses: 1
    Dernier message: 01/08/2008, 20h51
  5. comment comparer des lignes ou des colonnes
    Par juldace dans le forum SQL
    Réponses: 3
    Dernier message: 29/05/2007, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo