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 :

Alimenter un tableau en fonction de dates


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    logistique
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : logistique
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Alimenter un tableau en fonction de dates
    Bonjour à tous.

    Je ne sais pas par quel moyen alimenter un tableau excel ( calendrier )via un UserForm vers des colonnes en fonction de saisie de dates.
    Dois-je passer par un UserForm par onglets ou existe t'il un moyen d'alimenter chaque colonnes /mois avec un seul?

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Le fichier joint à l'entame d'une discussion n'est pas nécessaire. Il est souvent plus judicieux d'expliquer le problème de manière détaillée et d'agrémenter éventuellement le message de copies d'écran.

    Ici, si je comprends un peu le problème, je suppose que tu as différents onglets conçus sur un moule identique et que tu souhaites y pousser des données saisies dans un userform. Une copie d'écran d'un onglet et du userform serait à mon sens une bonne idée.

    Si tu as déjà écrit du code, ce serait également une bonne idée de nous le communiquer...

    Travailles-tu avec des tableaux structurés? A priori, je suppute que les onglets dans lesquels transférer les données devraient contenir chacun un tableau structuré. Il est alors assez aisé de déterminer dans quel onglet envoyer les données.

    Peux-tu nous donner quelques précisions?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Candidat au Club
    Homme Profil pro
    logistique
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : logistique
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Bonjour Pierre!
    Bon je viens effectivement de me rendre copte que mon message préliminaire est un peu succin .
    Pour donner plus de détails , je cherche à alimenter un tableau avec des numéro de vols annulés
    mais je ne trouve pas de solution pour le faire via un UserForm pour chaque mois de l’année
    en sachant qu’il peut y avoir plus de 10 vols a rentrer par jour .
    Nom : Capture tableau.JPG
Affichages : 100
Taille : 63,5 Ko
    Nom : Capture saisie.JPG
Affichages : 77
Taille : 30,1 Ko

    j'ai un peu commencer à me pencher sur du code mais je bloque un peu sur pas mal de détails.

    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
    57
    58
    59
    60
    61
    62
    63
    64
    Dim p
    Dim masque
     
    Private Sub CommandButton1_Click()
     
    End Sub
     
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
      If KeyCode = 8 Or KeyCode = 37 Then ' flèche gauche et backspace
        KeyCode = 0
        If p > 0 Then p = p - 1
           If p = 2 Or p = 5 Then p = p - 1
        End If
        If KeyCode = 39 Then ' flèche droite
           KeyCode = 0
           p = p + 1
           If p = 2 Or p = 5 Then p = p + 1
        End If
        If Mid(masque, p + 1, 1) = "." Then
           If KeyCode = 46 Then ' touche suppression
               Me.TextBox1 = Left(Me.TextBox1, p) & "." & Mid(Me.TextBox1, p + 2)
           End If
           If Not (KeyCode >= 48 And KeyCode <= 58 Or _
              KeyCode >= 96 And KeyCode <= 106) Then KeyCode = 0 ' Chiffres & lettes
         End If
         TextBox1.SelStart = p
         TextBox1.SelLength = 1
    End Sub
     
     
     
    Private Sub UserForm_Initialize()
     
       Set f = Sheets("SAISIE")
     
     
      masque = "../../.."
       TextBox1 = masque
       p = 0
       TextBox1.SelStart = p
       TextBox1.SelLength = 1
    End Sub
     
    Private Sub TextBox1_Change()
       p = p + 1
       If p = 2 Then p = 3
       If p = 5 Then p = 6
       TextBox1.SelStart = p
       TextBox1.SelLength = 1
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If Not IsDate(Me.TextBox1) Then
          Cancel = True
        End If
    End Sub
     
    Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        p = Me.TextBox1.SelStart
    End Sub
     
    Private Sub B_ok_Click()
        [A1] = CDate(Me.TextBox1)
    End Sub

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Quelques questions:
    • As-tu vraiment besoin d'un userform?
    • As-tu vraiment besoin de te compliquer la vie avec un contrôle sur la saisie avec masque de saisie et tout le toutim? Laisse-ça pour les gens qui ont envie de s'amuser à monter des solutions foireuses.
    • Pour moi, passer par un masque de saisie et le contrôle des touches sur un textbox est une aberration absolue... Où as-tu trouvé ce code? Le comprends-tu?
    • Le contrôle TextBox1 n'est pas renommé, par exemple en txtDate. As-tu envie de te souvenir que TextBox1, c'est pour la date, que Textbox2 c'est pour le numéro du vol, et ainsi de suite?
    • Si tu n'as vraiment que ces deux données à saisir, crois-tu que ce soit vraiment utile de t'amuser à créer un userform?
    • Que penses-tu de l'organisation de ton tableau? Ne crois-tu pas qu'il serait préférable de placer les dates les unes en dessous des autres en colonne A et de placer le numéro du vol, et les autres données éventuelles, dans les colonnes adjacentes?
    • Pourquoi s'amuser à éclater tes données sur plusieurs tableaux? As-tu tant de données que cela à saisir qu'un seul tableau devienne difficile à manipuler? Si oui, penses-tu qu'Excel soit la solution adaptée?
    • Dans ton code, tout à la fin, tu utilises [A1] = .... Très mauvaise syntaxe. La comprends-tu? Si oui, tu devrais te rendre compte très vite que ça ne va pas pouvoir t'aider beaucoup?
    • Pourquoi ne pas saisir directement dans les tableaux concernés? Tu pourrais mettre de la validation de saisie dans les colonnes et te simplifier grandement la vie.
    • Quel est ton niveau en Excel? En VBA?
    • Le code que tu donnes ne s'intéresse qu'au contrôle de la saisie d'une date, alors que ce point est vraiment le dernier dont il faut se préoccuper, une simple vérification qu'une date valide a été saisie avant de transférer les données dans le tableau étant largement suffisante. Perso, je laisserais totalement tomber ce contrôle en cours de saisie qui rend le code fragile et complexe pour aucune valeur ajoutée. Ne penses-tu pas qu'il serait d'abord intéressant de voir comment transférer les données d'un formulaire à un tableau? => ma contribution à ce sujet
    • Que comprends-tu et que ne comprends-tu pas des lignes de code que tu as montrées?
    • A priori, pas vraiment besoin de VBA ni de userform pour saisir des données dans un tableau, je pense.
    • Si tu veux vraiment utiliser un formulaire, pourquoi ne pas te tourner vers une feuille Excel qui servirait de formulaire?
    • Transférer les données d'une feuille "formulaire" vers une table de données est très simple avec un peu de mise en place et j'ai donné dernièrement des exemples sur le forum. Si vraiment besoin d'un "formulaire" et de vba, ce pourrait être une bonne approche?



    Perso, j'aurais mis les dates en dessous les unes des autres dans le tableau et je n'utiliserais qu'un seul tableau pour tous les mois. S'il y a tellement de lignes à saisir qu'il faut morceler le tableau par mois, c'est qu'Excel n'est pas l'outil le plus adapté pour réaliser la tâche. Avant même de se lancer dans le code, je pense qu'il faut réfléchir au projet et le couper en étapes. Le codage en lui-même ne représente que 10% max du temps d'élaboration de la solution, et bien souvent, pour ce genre de projet, n'est que l'adaptation de code générique (enregistrer des vols annulés ou des ventes de boites de petits pois, sur le plan informatique, c'est exactement la même chose)


    Désolé d'être si direct, mais je pense que tu es mal parti
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Candidat au Club
    Homme Profil pro
    logistique
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : logistique
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse très précise.
    Je débute en VBA et je pensais qu'ouvrir quotidiennement un tableau et replir cellule par cellules les annulations serais peinible en fin de compte. c'ets pour cela que je pensais passer par un formulaire un formulaire permettant de s'affranchir des ouvertures repetés des onglets.
    Je vais donc de ce pas réfléchir à une autre stratégie ... et faire dans la simplicité.
    Désolé pour le dérangement . je reviendrais vers vous si je ne trouve pas de solution adaptées.

    Merci beaucoup.

Discussions similaires

  1. [MySQL] Remplir un tableau en fonction des dates selectionnees
    Par cubita dans le forum PHP & Base de données
    Réponses: 146
    Dernier message: 28/07/2015, 21h37
  2. Réponses: 15
    Dernier message: 28/11/2011, 11h59
  3. Réponses: 3
    Dernier message: 18/11/2011, 16h23
  4. [XL-2003] Transfert valeurs Texbox dans tableau en fonction de la date
    Par maninwhite dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2010, 17h08
  5. Réponses: 2
    Dernier message: 24/04/2010, 03h01

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