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 :

[VBA-A]Problème de cellule Excel vide


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut [VBA-A]Problème de cellule Excel vide
    Bonjour tout le monde !!

    Voilà, j'ai un formulaire sous Access (donc fait en VBA) qui éxécute une requête et insère les donnée sous Excel :

    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
     With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
            "ODBC;DBQ=Z:\COMMON\DDI\Departement Clientele\Listing\Listing France 2006.mdb;DefaultDir=Z:\COMMON\DDI\Departement Clientele\Listing;" _
            ), Array( _
            "Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransacti" _
            ), Array("ons=0;Threads=3;UserCommitSync=Yes;")), Destination:=Range(Dest))
            .CommandText = Array( _
            "SELECT z_VTC.`Code pdv`, z_VTC.`Nom client`, z_VTC.CP, z_VTC.`Bureau distributeur`, z_VTC.`Date VT`, z_VTC.`Date VTC`" & Chr(13) & "" & Chr(10) & "FROM `Z:\COMMON\DDI\Departement Clientele\Listing\Listing France 2006`." _
            , "z_VTC z_VTC" & Chr(13) & "" & Chr(10) & "WHERE (z_VTC.RS= '" & NomRepSécu & "')")
            .name = "Lancer la requête à partir de Listing"
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .refresh BackgroundQuery:=False
        End With
    Mais, avant de lancer cette requête, je parcour une colonne du fichier Excel afin de détecter la première cellule vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        For S = 70 To 200
         cellule = "b" & S
         If Sheets("Formations-VTC ET-Sécu").Range(cellule).Value = "" Then
          Dest = "b" & S
          S = 200
         End If
        Next
    Ma variable 'Dest' contient donc la cellule qui recevra le début des données de ma requête, par exemple "b70" si c'est la première fois que j'éxécute la requête.

    Mais un problème se pose. En effet,si je ré éxécute la requête (qui contient 3 lignes par exemple) ma cellule de destination devrait donc être "b73", hors, le programme ne détecte que des cellules vides lors du parcour. En effet, j'ai fait msgbox("b70") et le résultat était du vide, et pourtant elle est bien remplie...
    Ce qui fait que mon programme insère le contenu de la seconde requête dans "b70" et donc ça décale tout.
    Par contre, si je fais une macro sous Excel faisant un msgbox("b70") là il me sort bien la valeur...
    Donc là franchement je n'y comprend rien...
    Un grand merci d'avance et bonne journée !

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par soad029
    msgbox("b70")
    ben si tu fais cela tu devrai obtenir un message affichant le texte "b70" et non pas le contenu de la cellule B70 ... tu est sur que tu fais cela ... montre nous plutot le code ou tu utilise ce fameux dest .. !

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    Salut bbil et merci d'avoir répondu!

    En effet, je n'ai pas fait msgbox("b70") mais MsgBox (Sheets("Formations-VTC ET-Sécu").Range(cellule9).Value)
    cellule9 ayant comme valeur "b70"

    Sinon, j'utilise "Dest" dans le premier code du topic que j'ai fournit (Execution de la requête):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Destination:=Range(Dest))

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    si tu est sous access ..., il faut rajouter la référence à la feuille excel..devant le range...

    MaFeuille.range("...

    j'ai pas vu ton code utilisé pour accéder à la feuille excel...

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    il faut rajouter la référence à la feuille excel..devant le range...
    Oui, mais c'est bien ce que j'ai fait : Sheets("Formations-VTC ET-Sécu").Range(cellule9).Value. Ma feuille s'appelle "Formations-VTC ET-Sécu".

    j'ai pas vu ton code utilisé pour accéder à la feuille excel...
    D'abord j'ouvre le fichier excel puis je fais un sheets("nomDeLafeuille").activate, puis le code que j'ai montré précédemment.

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    montre un peu plus de ton code... en gros pour simplifier, pour qu'un code Excel marche sous Access.. il faut précéder tous les objets excels de la référence à l'application excel ..

    AppExcel.Sheets(...., pareil pour range...etc etc

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

Discussions similaires

  1. Problème Verouillage Cellule excel 2003 : For each
    Par infocogef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/10/2013, 09h57
  2. [VBA-E] Positionnement des cellules excel
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2006, 20h38
  3. [VBA-P] Problème liaisons powerpoint-Excel
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/07/2006, 15h07
  4. [VBA-E]Largeur des cellules Excel adaptée au contenu de la cellule
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/05/2006, 08h33
  5. [EXCEL][VBA] Compter les cellules non-vides
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2006, 15h40

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