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 :

Renomer onglet fichier fermé liaison ADO [Toutes versions]


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
    autre
    Inscrit en
    Juin 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 16
    Par défaut Renomer onglet fichier fermé liaison ADO
    Hello,

    bonne année a tous.

    Je fais suite a un sujet ou l'on m'avait aidé pour faire des liaisons sur des fichiers fermés excel.

    J'utilise un classeur exel qui me permet de lister tout les fichiers d'un répertoire.

    Tout les classeurs du répertoire un exactement les même onglet/feuille.

    Donc lorsque je sélectionne un fichier, ca m'extrais toutes les données que j'ai besoin, toujours du même onglet.

    J'arrive a faire la connexion entre mes fichiers.

    l'extraction se passe bien, tout va bien sur un onglet avec un seul mot.

    Je veut dire par la que des que je veut faire l'extraction sur un onglet avec un nom avec espace ca marche plus.

    Avant de râler, je sais c'est pas bien d'utiliser des noms d'onglet avec espace mais j'ai pas le choix, le fichier est généré automatiquement comme ça par un logiciel. J'ai fouillé dans les paramètres,je ne peut rien faire a ce niveau la.

    En sachant que j'utilise une connexion Microsoft ActiveX dataObject, c'est quoi la bonne formulation pour que ca marche. La formule utilisé est celle si Set rs = cnn.Execute("[Feuil 1$A1:C100]")

    Sinon, comment je peut faire pour dire dans ma procédure de renommer la feuille/onglet avant de faire des extractions de données.

    Sinon, si vous avez d'autre idée, je suis preneur.

    je suis un peut degue car arrivé la et pas pouvoir finir a cause d'un espace.....


    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _Malou_ Voir le message
    Bonjour,

    A tout hasard et sans garantie, avec cette notation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "['Feuil 1'!$A$1:$C$100]"

  3. #3
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 16
    Par défaut
    ca fonctionne pas, merci quand meme

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _Malou_ Voir le message
    Avez vous regardé le tuto de Silkyroad ? silkyroad.developpez.com/VBA/ClasseursFermes/#LIV-A

    Notamment la procédure : RequeteClasseurFerme.

  5. #5
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 16
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Avez vous regardé le tuto de Silkyroad ? silkyroad.developpez.com/VBA/ClasseursFermes/#LIV-A

    Notamment la procédure : RequeteClasseurFerme.
    oui, c'est ce qui m'a permis de me mettre sur la voie pour mon projet. Mais je crois que l'espace dans l'onglet va empercher de le faire.

    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si tu utilise la référence Microsoft ActiveX dataObjec dans ton projet vba tu la bride inévitablement à la version installé sur ta machine! utilise créatobject!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim Cn as object
    set Cn=CreatObject("Adodb.Conection")
    si tu utilise un classeur sur ton bureau par exemple utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    environ("UserProfile")& "\Desktop\Classeur.xlsx"
    la propriété suivante te retourne la liste des Table (Onglets$) c'est comme un dire mais sur ton fichier connecté
    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
    Public Property Get TableToutes()
    Dim Shm, T()
    TableToutes = False
    With cn.OpenSchema(20)
        If Not .EOF Then
          Shm = .getrows
            ReDim T(UBound(Shm, 2))
             For i = 0 To UBound(Shm, 2)
                T(i) = Shm(2, i)
            Next
            TableToutes = T
        End If
        .Close
    End With
    End Property
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim cn
    Sub test()
    Set cn = CreateObject("Adodb.Connection")
    With cn
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        d = TableToutes
        .Close
    End With
    End Sub
    Nom : Sans titre.png
Affichages : 423
Taille : 2,6 Ko

    Édit: Maintenant modifier le nom d'un onglet sens ouvrir le classeur je ne vois pas car la méthode Alter Table n'existe tout simplement pas en ADO pour Excel!
    Dernière modification par Invité ; 19/01/2018 à 16h59.

  7. #7
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 16
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    si tu utilise la référence Microsoft ActiveX dataObjec dans ton projet vba tu la bride inévitablement à la version installé sur ta machine! utilise créatobject!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim Cn as object
    set Cn=CreatObject("Adodb.Conection")
    si tu utilise un classeur sur ton bureau par exemple utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    environ("UserProfile")& "\Desktop\Classeur.xlsx"
    la propriété suivante te retourne la liste des Table (Onglets$) c'est comme un dire mais sur ton fichier connecté
    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
    Public Property Get TableToutes()
    Dim Shm, T()
    TableToutes = False
    With cn.OpenSchema(20)
        If Not .EOF Then
          Shm = .getrows
            ReDim T(UBound(Shm, 2))
             For i = 0 To UBound(Shm, 2)
                T(i) = Shm(2, i)
            Next
            TableToutes = T
        End If
        .Close
    End With
    End Property
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim cn
    Sub test()
    Set cn = CreateObject("Adodb.Connection")
    With cn
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        d = TableToutes
        .Close
    End With
    End Sub
    Nom : Sans titre.png
Affichages : 423
Taille : 2,6 Ko

    Édit: Maintenant modifier le nom d'un onglet sens ouvrir le classeur je ne vois pas car la méthode Alter Table n'existe tout simplement pas en ADO pour Excel!
    Heu ok, ca dépasse de beaucoup mes connaissances.

    Je vois ou vous voulais en venir, et du coup je comprend que de la manière dont je suis parti ça ne pourra pas fonctionner.

    Je me permet de mettre en pièce jointe mon projet si quelqu'un a une idée ou un essai a faire.

    je préviens juste, c'est un peut bouillon mais c'est normal, c'est en attendant de résoudre mon problème d'espace.

    Merci

    Extraction Test.xls20172022_.xlsx20172022.xlsx20171220_.xlsx20171220.xlsx

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je vais autopsier ton fichier et je reviens vers toi!

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

    tu peux utiliser de espaces et de points dans le nom de tes onglets, mais il faut remplace test points par des dièse dans ta requête! "." -> "#"
    Code ça fonctionne! : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim cn
    Sub test()
    Set cn = CreateObject("Adodb.Connection")
    With cn
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO;"""
        d = TableToutes
        Set rs = .Execute("Select * from [Conc# in Calib Units$J18:J18]")
    Set rs = .Execute("[Conc# in Calib Units$K18:K18]") 'ça marche également!
        .Close
    End With
    End Sub


    Nom : Sans titre.png
Affichages : 305
Taille : 67,3 Ko
    Dernière modification par Invité ; 22/01/2018 à 12h09.

  10. #10
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 16
    Par défaut
    Alors la, trop cool !

    Désolé d'avoir mal dirigé ma question, j’étais persuadé que ça venait des espaces le problème.

    Encore merci

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

Discussions similaires

  1. [XL-2010] liaison avec un fichier fermé fichier xlsm ne fonctionne pas
    Par sebing dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/12/2013, 09h37
  2. [XL-2003] Liaisons avec fichiers fermés
    Par William-Michel dans le forum Excel
    Réponses: 8
    Dernier message: 09/02/2011, 11h07
  3. [XL-2002] Problèmes de liaisons si fichier fermé
    Par NEC14 dans le forum Excel
    Réponses: 4
    Dernier message: 20/10/2010, 09h40
  4. [XL-2002] Comment copier un onglet d'un fichier fermé
    Par Myte78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2009, 06h10
  5. ADO Excel, Supprimer Données dans Fichier Fermé
    Par vaucluseimmo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/08/2008, 19h20

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