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 :

Récupération de valeur - Base de donnée [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 48
    Par défaut Récupération de valeur - Base de donnée
    Bonjour,

    Je travaille sur un petit "logiciel" comprenant plusieurs base de donnée et j'ai un soucis concernant la récupération de certaines valeur.

    Je joint un fichier pour que mon explication soit plus claire...

    J'ai donc une base de donnée correspondant à des relevés de compteurs qui est remplie grâce à un userform comprenant une comboBox, quelques checkbox et textbox.
    Jusque là tout va bien, mon userform permet de créer une nouvelle ligne correspondant à un nouveau relevé.

    Cependant c'est là que je bloque :
    La ComboBox me permet de sélectionner l'armoire.
    J'aimerais que lorsque je sélectionne l'armoire, le programme détecte si un relevé à déjà été réalisé sur cette armoire et qu'il m'inscrive dans deux textbox, pour l'un, la date du dernier relevé et dans l'autre la consommation de ce dernier.

    J'espère avoir été clair dans mes explication, le fichier joint permet juste de voir comment est organiser la base de donnée, il n'y a pas le code, ça ne me semblait pas nécessaire mais s'il le faut je pourrais le mettre dans un second fichier.

    Je vous remercie d'avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    ce n'est pas très judicieux d'envoyer un fichier (déjà déconseillé au premier post) sans rien dedans, sinon une feuille simple avec quelques données
    c'est justement le ou les code(s) qu'il aurait fallu, non le fichier
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 48
    Par défaut
    Bonjour,

    Je connais le règlement, cependant sans un fichier, il est compliqué d'expliquer clairement mon objectif. Donc pour un premier fichier il m'est inutile de mettre les codes ou autre, il permet essentiellement de comprendre ma démarche et l'environnement sur lequel je travaille.

    Voici donc un second fichier avec le code.

    Merci d'avance !
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    D'après ton fichier, j'ai laissé tes propres déclarations de variables, j'ai ajouté les miennes, transformé ton "Initialize", je te propose (je n'ai pas touché au reste)en haut de module de l'usf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Ws As Worksheet, Tb, Tbtrie, Dic As Object
    Dim i As Integer, c As Long
    Dim a As Integer
    Dim b As Integer
    Dim strTemp As String
    code Initialize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
    Set Dic = CreateObject("Scripting.Dictionary")
    With Sheets("Feuil1")
      Tb = .Range("A4", .[A1048576].End(xlUp)(1, 7))'je t'ai laissé ta façon de récupérer ta dernière ligne et j'étends à col G
      Tbtrie = .Range("A4", .[A1048576].End(xlUp)(1, 7))
    End With
    Call tri(Tbtrie)
    For c = 1 To UBound(Tb, 1)
      Dic(Tbtrie(c, 1)) = ""
    Next c
    ComboBox1.List = Application.Transpose(Dic.keys)
    End Sub
    un code pour le tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub tri(tableau)'origine SilkyRoad "http://silkyroad.developpez.com/vba/tableaux/"
    Dim Cible As Variant
    Do
      a = 0
        For i = 1 To UBound(tableau, 1) - 1
          If tableau(i, 1) > tableau(i + 1, 1) Then
            Cible = tableau(i, 1)
            tableau(i, 1) = tableau(i + 1, 1)
            tableau(i + 1, 1) = Cible
            a = 1
          End If
        Next i
    Loop While a = 1
    End Sub
    et enfin le code de la combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox1_Click()
    Dim Ctab As Date, Ncompteur'je n'ai pas mis Ncompteur As..., je ne sais pas si c'est considéré comme un String, un Long, etc
      For i = 1 To UBound(Tb, 1)
        If Tb(i, 1) = ComboBox1 Then
          Ctab = Tb(i, 2): Ncompteur = Tb(i, 7)
          If CDate(Tb(i, 2)) > Ctab Then
            Ctab = Tb(i, 2): Ncompteur = Tb(i, 7)
          End If
        End If
      Next i
      TextBox1 = Ctab: TextBox2 = Ncompteur
    End Sub
    Si ma façon de faire te convient mais tu ne comprends pas tout n'hésites pas, je remettrai les codes avec les explications détaillées
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 48
    Par défaut
    Je te remercie beaucoup pour ta réponse, ça marche parfaitement !

    Je suis preneur de toutes propositions comme pour mon Initialize, ça me permet de progresser en VBA et d'avoir un code plus propre et fonctionnel !

    Merci pour ton aide

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'en suis ravi, cette ligne (que tu peux garder),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tbtrie = .Range("A4", .[A1048576].End(xlUp)(1, 7))
    j'aurais pu mettre c'est un détail,
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. [XL-2003] Modification valeurs base de données via userform
    Par Kimaos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/05/2009, 05h29
  2. [vb6] remplacer valeur base de données access
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/10/2008, 01h02
  3. Archivage et récupération de la base de données
    Par souminet dans le forum Débuter
    Réponses: 28
    Dernier message: 30/09/2008, 09h27
  4. [MySQL] Récupération d'une base de données Mysql
    Par metador dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/06/2008, 09h38
  5. Récupération d'une base de données! <!IMPASSE!>
    Par emmr.rida dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/04/2008, 12h13

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