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 :

affichage de dates sur une feuille de calcul à partir d'un tableau VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Par défaut affichage de dates sur une feuille de calcul à partir d'un tableau VBA
    Bonjour,
    je suis confronté à un pbl sous excel/vba.
    sous vba j'ai créé un tableau qui retourne chaque jour en fonction d'un mois et d'une année donnés.
    je transfère ensuite ce tableau sur une feuille de calcul, rien de bien compliqué jusque là, mais le résultat ne correspond pas vraiment à mes attentes...
    à partir du code ci-dessous, vous allez vous rendre compte du pbl que je rencontre...
    si qq'un pouvait m'aider à résoudre et comprendre le souci...
    ce serait bien cool! merci

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Option Explicit
    Option Base 1
     
    Sub créerMois()
     
    Dim Mydate As Date
    Dim TableMonth() As String
    Dim Mytab() As String
     
     
    'Dim ListMois(12) As String
    Dim NumMois As Integer
    Dim annee As Integer
    Dim nbrejours As Integer
     
    Dim i As Integer
    'Dim j As Integer
    'Dim x As Integer
    'Dim y As Integer
    'Dim n As Integer
    'Dim m As String
     
     
    'parametrage du mois de travail
        'NumMois = InputBox("quel mois (nbre entre 1&12)")
        'annee = InputBox("quelle année")
        'Mydate = DateSerial(annee, NumMois, 1)
        'nbrejours = Day(DateSerial(annee, NumMois + 1, 0))
    'code pour calcul nbrejours d'un mois et d'une annee donnés : Day (DateSerial(annee, NumMois + 1, 0))
     
    i = 1
    'parametrage par defaut au 1 fevrier 2016
    Mydate = DateSerial("2016", "2", i) 'Date travaillée
    nbrejours = Day(DateSerial("2016", "3", "0")) 'retourne le nbre de jours du mois travaillé Day(dateserial(annee, nummois + 1, 0)
     
    'TESTS retourne le premier jour du mois de l'année travaillée et le nbre de jours que contient ce mois
    MsgBox ("le 1er jour du mois de travail utilisé est " & Mydate)
    MsgBox ("le nombre de jours de ce mois est de " & nbrejours)
     
     
    Range("B1").Value = Mydate
     
    'TRANSFERT D'UN TABLEAU sur excel
     
    ReDim Mytab(1 To nbrejours)
    For i = 1 To nbrejours
        'Paramètres par défaut sans saisie
        Mytab(i) = DateSerial("2016", "2", i)
        'Paramètres avec implémentation des variables 'Mytab(i) = DateSerial(annee, NumMois, i)
    Next i
     
     
    'transfère le tableau sur la feuille excel en colonne
    Range(("A3"), Cells(UBound(Mytab) + 2, 1)).Value = Application.WorksheetFunction.Transpose(Mytab)
    End Sub

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 219
    Billets dans le blog
    2
    Par défaut
    Bonjour adourlot,

    Peut-être comme ça (j'ai juste converti les dates en Long dans ton tableau puis appliqué un format date aux cellules résultantes)

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Option Explicit
    Option Base 1
     
    Sub créerMois()
     
    Dim Mydate As Date
    Dim TableMonth() As String
    Dim Mytab() As String
     
     
    'Dim ListMois(12) As String
    Dim NumMois As Integer
    Dim annee As Integer
    Dim nbrejours As Integer
     
    Dim i As Integer
    'Dim j As Integer
    'Dim x As Integer
    'Dim y As Integer
    'Dim n As Integer
    'Dim m As String
     
     
    'parametrage du mois de travail
        'NumMois = InputBox("quel mois (nbre entre 1&12)")
        'annee = InputBox("quelle année")
        'Mydate = DateSerial(annee, NumMois, 1)
        'nbrejours = Day(DateSerial(annee, NumMois + 1, 0))
    'code pour calcul nbrejours d'un mois et d'une annee donnés : Day (DateSerial(annee, NumMois + 1, 0))
     
    i = 1
    'parametrage par defaut au 1 fevrier 2016
    Mydate = DateSerial("2016", "2", i) 'Date travaillée
    nbrejours = Day(DateSerial("2016", "3", "0")) 'retourne le nbre de jours du mois travaillé Day(dateserial(annee, nummois + 1, 0)
     
    'TESTS retourne le premier jour du mois de l'année travaillée et le nbre de jours que contient ce mois
    MsgBox ("le 1er jour du mois de travail utilisé est " & Mydate)
    MsgBox ("le nombre de jours de ce mois est de " & nbrejours)
     
     
    Range("B1").Value = Mydate
     
    'TRANSFERT D'UN TABLEAU sur excel
     
    ReDim Mytab(1 To nbrejours)
    For i = 1 To nbrejours
        'Paramètres par défaut sans saisie
        Mytab(i) = CLng(DateSerial("2016", "2", i))
        'Paramètres avec implémentation des variables 'Mytab(i) = DateSerial(annee, NumMois, i)
    Next i
     
     
    'transfère le tableau sur la feuille excel en colonne
    Range(("A3"), Cells(UBound(Mytab) + 2, 1)).Value = Application.WorksheetFunction.Transpose(Mytab)
    Range(("A3"), Cells(UBound(Mytab) + 2, 1)).NumberFormat = "m/d/yyyy"
    End Sub

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Par défaut
    merci beaucoup, effectivement je n'avais pas pensé à convertir des données 'long' en 'date'
    encore un dépannage des plus efficace!!!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2011, 15h10
  2. Fixer l'userform sur une feuille de calcul.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/12/2007, 17h45
  3. Grouper les contrôles sur une feuille de calcul
    Par stos dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/09/2007, 15h11
  4. Comment générer du code sur une feuille de calcul?
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/05/2007, 16h20
  5. Contrôles (CheckBox) sur une feuille de calcul
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/12/2006, 09h54

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