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 :

base de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut base de données
    Bonjour,

    J’ai trouvé le code suivant dans un Forum allemand, il permet transfert des données d un classer á un autre classeur (base de données) fermé.
    J’aimerais bien que ce code soit changé de telle façons que si les données existe déjà il les actualise et si ces donnée n’existe pas qu’il les rajoute a partir de la dernier ligne.
    Le code :

    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
    Sub x()
    Dim arr(5) As Variant
    Dim RanFree As Integer
    Dim wks As Workbook
     
    '**************************************
    '*** Hier muß dein Drucken Code hin ***
    '**************************************
     
    arr(0) = [E2]
    arr(1) = [I2].Text
    arr(2) = [D5]
    arr(3) = [I5]
    arr(4) = [D7]
    arr(5) = [I7]
     
    Set wks = Workbooks.Open("C:\Muster\Auswertung.xls") ' <--- Pfad anpassen
     
    RanFree = wks.Worksheets(1).Range("A65536").End(xlUp).Row + 1
     
    wks.Worksheets(1).Cells(RanFree, 1) = arr(0)
    wks.Worksheets(1).Cells(RanFree, 2) = arr(0)
    wks.Worksheets(1).Cells(RanFree, 3) = arr(1)
    wks.Worksheets(1).Cells(RanFree, 4) = arr(2)
    wks.Worksheets(1).Cells(RanFree, 5) = arr(3)
    wks.Worksheets(1).Cells(RanFree, 6) = arr(4)
    wks.Worksheets(1).Cells(RanFree, 7) = arr(5)
    wks.Save
    wks.Close
     
    End Sub
    merci d'avance et Slts

    Chaelo

  2. #2
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    tu as essayé qqch avant de poster ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Chaelo,

    Le problème ne semble pas à priori très compliqué sauf qu'il reste à savoir sur quelle données la comparaison peut se faire pour déterminer si l'on doit :

    -actualiser la dernière ligne (ou une autre ?)
    -ou créer une nouvelle ligne.

  4. #4
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut
    Bonjour,

    Ci-joint un exemple, le formulaire réclamation me permet de remplier une fiche de réclamation et de l’enregistrer sous un dossier du client, avec le bouton Transfer je transfère mes donné au classeur Auswertung qui me permet de faire une liste de toute les réclamations et leurs situation.

    La comparaison doit ce faire dans la colonne A. si le numéro existe déjà il faut alors soit remplacé toute la ligne ou remplir les cellules vides (Actualisation donc), si le numéro n’existe pas donc ajouté une ligne et ainsi de suite.

    Merci pour votre aide.

    Mes Slts

    Chaelo
    Fichiers attachés Fichiers attachés

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Chaelo,

    Voici le code que j'ai mis dans votre module1 (en conservant votre façon de procéder) et que j'ai testé :

    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
    Sub x()
    Dim arr(8) As Variant
    Dim RanFree As Integer
    Dim wks As Workbook
    Dim n As Integer, n1 As Integer
    Dim mnum
    '**************************************
    '*** Hier muß dein Drucken Code hin ***
    '**************************************
     
    arr(0) = Worksheets(2).[E9]
    arr(1) = Worksheets(2).[E13]
    arr(2) = Worksheets(2).[E16]
    arr(3) = Worksheets(2).[E20]
    arr(4) = Worksheets(2).[E24]
    arr(5) = Worksheets(2).[E28]
    arr(6) = Worksheets(2).[E32]
    arr(7) = Worksheets(2).[E36]
     
    Set wks = Workbooks.Open("C:\Muster\Auswertung.xls") ' <--- Pfad anpassen
     
    RanFree = wks.Worksheets(1).Range("A65536").End(xlUp).Row + 1
    For n = 2 To RanFree - 1
    mnum = wks.Worksheets(1).Cells(n, 1)
        If mnum = arr(0) Then
            For n1 = 2 To 8
            wks.Worksheets(1).Cells(RanFree, n1) = arr(n1 - 1)
            Next n1
        wks.Save
        wks.Close
        Exit Sub
        End If
        Next n
     
    For n1 = 1 To 8
    wks.Worksheets(1).Cells(RanFree, n1) = arr(n1 - 1)
    Next n1
    wks.Save
    wks.Close
    End Sub
    Remarque : au départ vous avez écrit :

    J’ai trouvé le code suivant dans un Forum allemand, il permet transfert des données d un classer á un autre classeur (base de données) fermé.
    J'avais donc cru comprendre que vous vouliez mettre à jour ce 2ème classeur sans l'ouvrir.
    Mais comme dans votre code il y a l'instruction qui ouvre votre classeur, je n'ai pas modifié.

    Amicalement.

  6. #6
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Par défaut
    Bonjour jacques_jean,

    Votre proposition me permet de rajouter une deuxieme ligne, sans la valeur de celulle E9(reclamation.xls) dans la cologne A du tableau Auswertung.xls.
    ce que je veux c'est que le code doit verifier la cologne A du classeur Auswertung.xls et voir si la valeur E9 (de reclamation.xls) existe:
    si oui il doit actualiser cette meme ligne.
    si non il doit rajouter ces données au tableau.


    merci pour votre aide.

    Chaelo

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour Chaelo,

    En effet il y avait une anomalie. Je n'ai pas compris pourquoi mon 1er essai avait fonctionné.

    Toutes mes excuses.

    Ci-dessous le code rectifié (seule la variable en rouge a été rectifiée)

    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
    Sub x()
    Dim arr(8) As Variant
    Dim RanFree As Integer
    Dim wks As Workbook
    Dim n As Integer, n1 As Integer
    Dim mnum
    '**************************************
    '*** Hier muß dein Drucken Code hin ***
    '**************************************
     
    arr(0) = Worksheets(2).[E9]
    arr(1) = Worksheets(2).[E13]
    arr(2) = Worksheets(2).[E16]
    arr(3) = Worksheets(2).[E20]
    arr(4) = Worksheets(2).[E24]
    arr(5) = Worksheets(2).[E28]
    arr(6) = Worksheets(2).[E32]
    arr(7) = Worksheets(2).[E36]
     
    Set wks = Workbooks.Open("C:\Muster\Auswertung.xls") ' <--- Pfad anpassen
    
    RanFree = wks.Worksheets(1).Range("A65536").End(xlUp).Row + 1
    For n = 2 To RanFree - 1
    mnum = wks.Worksheets(1).Cells(n, 1)
        If mnum = arr(0) Then
            For n1 = 2 To 8
            wks.Worksheets(1).Cells(n, n1) = arr(n1 - 1)
            Next n1
        wks.Save
        wks.Close
        Exit Sub
        End If
        Next n
        
    For n1 = 1 To 8
    wks.Worksheets(1).Cells(RanFree, n1) = arr(n1 - 1)
    Next n1
    wks.Save
    wks.Close
    End Sub

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

Discussions similaires

  1. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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