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

Access Discussion :

[Access] Fonction d'exportation vers Excel avec recordset


Sujet :

Access

  1. #1
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut [Access] Fonction d'exportation vers Excel avec recordset
    Bonjour à tous,

    j'utilise la fonction qu'a créé Muhad'hib ici : http://www.developpez.net/forums/sho...29#post1339129

    J'exporte ma table dans un fichier excel exitant. Dans une cellule de celui-ci, une formule est présente (par exemple =$E$1 + $F$1). Seulement, quand j'importe ma table access, cette formule est écrasée. Je voudrais la conserver lorsque le champ en question n'est pas rempli. Je sais pas si je suis clair

    Est-ce possible ?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Re,

    Peux-tu donner ton code en entier (pas la fonction mais son utilisation) et préciser sur quelle plage tu colle les données et sur quelle colonne tu veux cette formule ?

    A+

  3. #3
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Re,

    alors, voilà exactement ce qui se passe :
    je veux exporter une requête ayant pour champ :
    Item, Option, zone, description, U, Nb, F, type

    L'utilisateur saisie ces différents champs. Mais il n'est pas obligé de tous les remplir.

    Ensuite il clique sur un bouton "exporter" qui effectue ta fonction et exporte les valeurs dans l'onglet "FMVA" à l'emplacement ligne 11, colonne 1.
    Cela à pour but de remplir un tableau déjà existant mais vide (seul les entêtes existent). Deux colonnes excel sont affectées par une formule :
    - La colonne correspondant au champ "U" contient la formule =$E1$
    - La colonne correspondant au champ "type" contient la formule =SI(E11<380;1;3) pour la ligne 11, =SI(E12<380;1;3) pour la ligne 12 etc...

    J'aimerais que : lorsque l'utilisateur ne remplis pas un de ces champs dans access, l'export des données n'écrase pas les formules.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Re,

    En fait, il n'y a pas de solutions avec la fonction existante pour l'exporter les données que si il y a une valeur. Je vois 3 possibilités :

    - Modifier la fonction : tu remplace la méthode .copyfromrecorset par 2 boucles (une pour parcourrir les champs de ton recordset et une pour parcourrir tes enregistrements). Tu ne modifie la valeur de ta cellule que si la valeur du recordset pour le champ et l'enregistrement donné est pas nul. (tu trouvera ici une ancienne version de la fonction avec les 2 boucles)

    - Tu garde la fonction existante, et aprés l'export, tu parcours la plage de donnée pour remplacer les cellules vide par la bonne formule.

    - Tu modifie ta requete pour qu'elle prenne en compte tes tests et formules. Ainsi l'export sera conforme à ton attente sans besoin de formaules excel.


    A+

  5. #5
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Merci pour tout,

    je vais tester ça

    bye

  6. #6
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    J'ai choisi la deuxieme solution. Je veux donc par exemple mettre ce code excel dans mon "Private Sub O_FMVA_Click()" dans access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Sheets("FMVA").Select
        Range("E11").Select
        ActiveCell.FormulaR1C1 = "=R1C5"
        Selection.AutoFill Destination:=Range("E11:E33"), Type:=xlFillDefault
        Range("E11:E33").Select
    comment faire pour qu'access comprenne ce code ?

    (j'ai testé des "With Excelsheet" , "With xlsheet", je bidouille mais ça marche pas).

    Merci

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Re,

    Inspire toi de la fonction.
    Tout dépend de ton code mais tu dois avoir qqchose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Dim Truc as object
    ...
    Set Truc = fExportExcel(...
     
    ...
    Pour faire ce que tu indique plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     With Truc.Sheets("FMVA")
        .Range("E11").FormulaR1C1 = "=R1C5"
        .Range("E11").AutoFill Destination:=Range("E11:E33"), Type:=xlFillDefault
     
    end with
    A+

    PS : quand tu transpose dans Access évite les Bidule.select puis Selection.Machin . Préfère Bidule.Machin directement.

  8. #8
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Salut,

    J'ai écrit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Excl.Sheets("FMVA")
        .Range("E11").FormulaR1C1 = "=R1C5"
        .Range("E11").AutoFill Destination:=Range("E11:E33"), Type:=xlFillDefault
        
    End with
    Et j'ai une erreur : "sub ou fonction non défini" au niveau du Range("E11:E33")

    pourquoi donc ?

    a+

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    Je suis allé trop vite ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With Excl.Sheets("FMVA")
        .Range("E11").FormulaR1C1 = "=R1C5"
        .Range("E11").AutoFill Destination:= .Range("E11:E33"), Type:=xlFillDefault
        
    End with
    A+

  10. #10
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    re,

    lol j'aurais pu trouver par moi-même...

    merci,

  11. #11
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Citation Envoyé par Puffcash
    re,

    lol j'aurais pu trouver par moi-même...

    merci,
    et mettre [résolu] pendant qu'on y est ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Re,

    Citation Envoyé par Puffcash
    lol j'aurais pu trouver par moi-même...

    Heu, ... oui ... euh en fait j'avais fait exprés pour voir si tu suivais ...

    (pas trés crédible ? normal )

    Pense au flag si tout est OK

    A+

  13. #13
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    re,

    un petit detail,

    je veux écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("E" & L1).AutoFill Destination:=.Range("E11:E33"), Type:=xlFillDefault
    avec L1 as integer,

    Mais connais pas la syntaxe pour Range("E11:E33"), avec 11 remplacé par L1

    j'ai essayé : Range("E & L1:E33"), Range(""E" & L1:E33"),
    mais sans succès,

    Merci,

  14. #14
    Membre confirmé Avatar de milia
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2006
    Messages : 481
    Points : 532
    Points
    532
    Par défaut
    Bonjour,

    Citation Envoyé par Puffcash
    Mais connais pas la syntaxe pour Range("E11:E33"), avec 11 remplacé par L1
    Pour trouver la syntaxe la touche F1 aide beaucoup.
    C'est juste une idée peut être que c'est faux peut être qu'il y a plus simple aussi. De déclarer une variable qui concatène ton "E" et le L1 avec deux point au mieux! Comme ça!
    toto = "E" & ":" & L1

    Mais je dis peut être une grosse bêtisse.

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

Discussions similaires

  1. Probleme d'exportation vers excel avec report 10G
    Par jedos dans le forum Reports
    Réponses: 0
    Dernier message: 19/05/2009, 20h58
  2. [CR XI] export vers excel avec plusieurs onglets
    Par mickamar51 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 06/10/2008, 10h34
  3. Export vers Excel avec Concaténation
    Par stylee307 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 19/04/2008, 04h36
  4. [Automation]export vers excel avec arborescence
    Par djo.alpha dans le forum Access
    Réponses: 5
    Dernier message: 20/04/2007, 09h55
  5. Fonction d'exportation vers Excel
    Par Muhad'hib dans le forum Contribuez
    Réponses: 11
    Dernier message: 11/09/2006, 12h11

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