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 :

Aide avec QueryTables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut Aide avec QueryTables
    J'ai le code suivant

    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
     
    With ActiveSheet.QueryTables.Add(Connection:= _
            "ODBC;DSN=DB;;;MODE=SHARE;DBALIAS=DB;", Destination:=Range("A1"))
            .CommandText = Array( _
            "SELECT T.VALEUR FROM Table T")
            .Name = "Valeur"
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlOverwriteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
    Les valeurs retourné vont alors se placer sur A1,A2,A3...etc
    Je voudrais savoir si il été possible de mettre les valeur non plus A1,A2,A3...etc mais A1,B1,C1...etc ?

    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Une solution parmi d'autres, a ajouter apres le query:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Activesheet
        .Range("A1:A" & .Range("A35536").End(xlUp).Row).Copy
        .Range("B1").PasteSpecial Transpose:=True
        Application.DisplayAlerts=False
            .Columns(1).Delete
        Application.DisplayAlerts=True
    End With
    ++
    Minick

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Merci mais ça ne sera pas bon.

    Pourquoi ? déjà parceque je vais loin au niveau des colonnes (donc faudrai écrire le code pour chaque ligne ...)
    Ensuite le probleme c'est que j'ai un calcul en bas de chaque colonnes.

    Exemple de mon tableau Excel:

    A à G correspond aux 7 jours de la semaine.
    A2 à A6 correspond à 5 types de valeur que je vais reprendre indépendamment par types (genre Val1, Val2, Val3 ... repris chaqu'un par une requête).

    Un type de valeur (ex: Val1) n'a q'une valeur par jour.
    C'est pourquoi je veux écrire les valeurs des 7 jours de Val1 de A2 à G2 (et non A2 à A6 comme ça le fait avec mon code plus haut).

    J'ai aussi de A7 à G7 un calcul, ex: SOMME(A2:A6).

    Ce que je voudrais savoir simplement: est-ce qu'il est possible de mettre un paramètre dans un QueryTables pour que les valeurs récupérer ne soient pas coller par défaut sur les lignes d'une colonne, mais sur les colonnes d'une ligne ? (sans faire de bidouillage, coller ailleur pour reprendre, faire 2-3 copier/coller ... etc).

    Si oui, quel est ce paramètre, comment le mettre en place ?

    Si non, ben, je commence à faire du bidouillage ^^


    Merci

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    ah une partie de trouver.

    ça permet le coller sur une ligne désigné.

    Est-il possible de le mettre dans mon QueryTables ?

    je n'y ai pas réussi pour le moment

  5. #5
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour Frederic974 et bienvenu sur le forum
    Bonjour a tout le forum


    Query crée un Recordset bref un groupe de valeur composé de champs (colonne) et des enregistrements (Lignes)

    Quand un recordset est renvoyé (ici en l’occurrence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Destination:=Range("A1")
    La table est donc rapatriée à partir de la cellule A1. Les champs remplissent les colonnes et les enregistrements les lignes

    Tu demande l’inverse, or les enregistrements ne peuvent devenir les champs.
    Oriente-toi plutôt vers une solution comme te le propose Minick

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Ok merci.
    On peut pas faire alors, merci pour l'explication.

    Je vais mettre ça sur une feuille à part puis faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Application.CutCopyMode = False
    Range("A2:A10").Select
    Selection.Copy
    Sheets("Work").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    et ça marche

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

Discussions similaires

  1. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 12h39
  2. [ASA] J'ai besoin d'aide avec sybase et vb6 svp !!
    Par tibo830 dans le forum SQL Anywhere
    Réponses: 7
    Dernier message: 12/05/2006, 10h09
  3. Besoin d'aide avec TinyXML
    Par Clad3 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/08/2005, 18h20
  4. Réponses: 2
    Dernier message: 29/08/2003, 17h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

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