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 :

Importer données d'un logiciel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut Importer données d'un logiciel
    Bonsoir tous le monde
    à l'aide de l'enregistreur automatique j'ai enregistrer le code suivant :
    je cherche à
    1/ simplifier le code
    2/ surtout remplacer la date pour quelle soit variable et à saisir par l'utilisateur dans E7 de la feuille "Acceul" pour la date début et E8 de la meme feuille pour la date fin
    la date actuellement se trouve dans 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
    Sub connectmatuse()
    'importer données des consommations MATUSETRANS
     With Sheets("matusetrans")
     Sheets("matusetrans").Select
     Cells.Select
        Selection.ListObject.QueryTable.Delete
        Selection.ClearContents
     
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=maxicf;SERVER=ICF;", Destination _
            :=Range("$A$1")).QueryTable
            .CommandText = Array( _
            "SELECT MATUSETRANS.*" & Chr(13) & "" & Chr(10) & "FROM MAXICF.MATUSETRANS MATUSETRANS" & Chr(13) & "" & Chr(10) & "WHERE  (MATUSET" _
            , "RANS.TRANSDATE>={ts '2016-04-01 00:00:00'})AND (MATUSETRANS.TRANSDATE<={ts '2016-04-30 00:00:00'})")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Tableau_DonnéesExternes_2"
            .Refresh BackgroundQuery:=False
        End With
      End With
    End Sub
    BONNE SOIRÉE A TOUS et merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    quelque chose comme ça ?

    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
    Sub connectmatuse()
    'importer données des consommations MATUSETRANS
        With Sheets("matusetrans")
            With .Cells
                .ListObject.QueryTable.Delete
                .ClearContents
            End With
     
            With .ListObjects.Add(SourceType:=0, Source:="ODBC;DRIVER={Microsoft ODBC for Oracle};UID=maxicf;SERVER=ICF;", Destination:=.Range("$A$1")).QueryTable
                .CommandText = Array( _
                    "SELECT MATUSETRANS.*" & Chr(13) & "" & Chr(10) & "FROM MAXICF.MATUSETRANS MATUSETRANS" & Chr(13) & "" & Chr(10) & "WHERE  (MATUSET" _
                    , "RANS.TRANSDATE>={ts '" & Sheets("ACCUEIL").Range("E7").Text & " 00:00:00'})AND (MATUSETRANS.TRANSDATE<={ts '" & Sheets("ACCUEIL").Range("E7").Text & " 00:00:00'})")
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .BackgroundQuery = True
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .PreserveColumnInfo = True
                .ListObject.DisplayName = "Tableau_DonnéesExternes_2"
                .Refresh BackgroundQuery:=False
            End With
        End With
    End Sub
    Il faut au préalable que les cellules E7 et E8 soient au format "personnalisé" aaaa-mm-jj

    En effet, la propriété .text de la cellule va renvoyer la date telle qu'elle est affichée sur excel.


    par exemple, si tu écris 01/04/2016 dans la cellule et que tu lui appliques le format dont j'ai parlé :

    - dans la cellule tu vois 2016-04-01
    - dans la barre de formule tu vois 01/04/2016
    - la propriété .Text te renvoie 2016-04-01
    - la propriété .Value te renvoie 01/04/2016

  3. #3
    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 à toutes et tous,

    - la propriété .Text te renvoie 2016-04-01
    - la propriété .Value te renvoie 01/04/2016
    et Value2 renvoi le numéro de série de la date en l'occurence 42461

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faut que les date soient au même format dans ta requête!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With .ListObjects.Add(SourceType:=0, Source:="ODBC;DRIVER={Microsoft ODBC for Oracle};UID=maxicf;SERVER=ICF;", Destination:=.Range("$A$1")).QueryTable
                .CommandText = Array( _
                    "SELECT MATUSETRANS.*" & Chr(13) & "" & Chr(10) & "FROM MAXICF.MATUSETRANS MATUSETRANS" & Chr(13) & "" & Chr(10) & "WHERE  (MATUSET" _
                    , "Format(RANS.TRANSDATE,'yyyy-mm-dd hh:mm:ss')>={ts '" & format(Sheets("ACCUEIL").Range("E7").Text , "yyyy_mm-dd hh:mm:ss") & "'})AND (MATUSETRANS.TRANSDATE<={ts '" & Sheets("ACCUEIL").Range("E7").Text & " 00:00:00'})")
    mais je pense que dans oracle ça ressemble plus à ça!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TO_CHAR(MYDATE,'DD-MM-YYYY HH24:MI:SS')
    mais il existe chez oracle une requête qui formate les date pour toute la session de la connexion!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql="ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd HH24:MI:SS'"
    sql=sql " select Mdate from table Where Mydate>'2016-05-01 14:55:28';"
    tu peux même forcer au format excel alors plus de problème tu passe la valeur de ta cellule!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ALTER SESSION SET NLS_DATE_FORMAT = 'dd/mm/yyyy HH24:MI:SS'"
    et là ta requête devrait passer tel qu'elle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql="ALTER SESSION SET NLS_DATE_FORMAT = 'dd/mm/yyyy HH24:MI:SS'" & vbcrlf
    sql=sql &   "SELECT MATUSETRANS.*" & vbcrlf & "FROM MAXICF.MATUSETRANS MATUSETRANS" & vbcrlf & "WHERE  (MATUSET" _
                    , "RANS.TRANSDATE>={ts '" & format(Sheets("ACCUEIL").Range("E7").Text , "dd/mm/yyyy 00:00:00") & "'})AND (MATUSETRANS.TRANSDATE<={ts '" & Sheets("ACCUEIL").Range("E7").Text & " 00:00:00'})")
    Dernière modification par Invité ; 10/05/2016 à 09h27.

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjours à tous, MERCI MESSIEURS : rdurupt, Theze et joe.levrai pour vos réponses et disponibilités
    * joe.levrai j'ai adapté ta proposition moyennant une petite modification
    déclarer date début et date fin comme "string" et ça fonctionne à merveille
    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
    Sub connectmatuse()
    'importer données des consommations MATUSETRANS
    Dim datdeb As String
    Dim datfin As String
    datdeb = Sheets("Acceuil").Range("J7").Text
    datfin = Sheets("Acceuil").Range("J8").Text
     With Sheets("matusetrans")
     Sheets("matusetrans").Select
     Cells.Select
        Selection.ListObject.QueryTable.Delete
        Selection.ClearContents
     
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=maxicf;SERVER=ICF;", Destination _
            :=Range("$A$1")).QueryTable
            .CommandText = Array( _
            "SELECT MATUSETRANS.*" & Chr(13) & "" & Chr(10) & "FROM MAXICF.MATUSETRANS MATUSETRANS" & Chr(13) & "" & Chr(10) & "WHERE  (MATUSET" _
            , "RANS.TRANSDATE>={ts '" & datdeb & " 00:00:00'})AND (MATUSETRANS.TRANSDATE<={ts '" & datfin & " 00:00:00'})")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Tableau_DonnéesExternes_2"
            .Refresh BackgroundQuery:=False
        End With
      End With
    End Sub

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

Discussions similaires

  1. importation données d'un fichier access au ms sql server
    Par timsah dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/01/2006, 12h40
  2. Importer données Unicode Oracle dans SQL-Server 2000.
    Par LaFraise dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/12/2005, 14h54
  3. importer données fichier excel dans bd mysql
    Par Hydre dans le forum Administration
    Réponses: 1
    Dernier message: 05/10/2005, 19h39
  4. Les bases de données dans un logiciel PRo
    Par LaMusaraigne dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 30/06/2005, 08h18
  5. [VB.NET] Import donnes d'excel : chiffres et lettres
    Par JohnGT dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/10/2004, 18h53

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