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 :

Mise en forme d’une feuille excel à partir de


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Mise en forme d’une feuille excel à partir de
    Bonjour les amis,

    En fait, ce que je veux faire est simple : je veux ouvrir une page à partir d’access et y envoyer certaines données pour l’affichage. Dans l’affichage, je veux fusionner certaines cellules puis redimensionner la cellule fusionnée.
    Le problème, c’est que le résultat que j’obtiens est conforme à mon attente lorsque je lance l’application une première fois. Les fois d’après, les cellules ne sont pas fusionnées et l’affichage ne correspond pas à mon attente. .. Lorsque je ferme la feuille ouverte ou les feuilles ouvertes et que je relance l’application, j’obtiens l’erreur suivante :
    « VARIABLE OBJET OU VARIABLE DE BLOC WITH NON DEFINIE »
    Je joins le code de l’application. Pour le tester, créer un bouton sur un formulaire et associez à ce bouton le code suivant….
    Pour infos, les bibliothèques ‘Microsoft Excel 10.0 Object Library, Microsoft ADO 2.1 Library, Visual Basic for Applications, OLE Automation, Microsoft Access 10.0 Object Library’ ont été définies au niveau de Outils,‘Référence’.
    Merci de votre aide

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Compare Database
     
    Public xlApp As Object
    Public saisie As Object
     
    Private Sub Commande0_Click()
    On Error GoTo Err_Commande0_Click
     
     
        'ouverture d'une appli excel
            Set xlApp = CreateObject("excel.application")
            xlApp.Visible = True
     
        'ajout d 'un classeur
            Set saisie = xlApp.Workbooks.Add
     
    k = 1
    While k <= 3
     
        'definir valeurs de 2 cellules placées l'une contre l'autre
     
            With saisie.sheets("Feuil1").Cells(k, 1)
                    .Value = "MINISTERE DE L'ENSEIGNEMENT TECHNIQUE ET DE LA RECHERCHE PROFESSIONNELLE"
                    .Font.Size = 7
                    .Font.Bold = True
                    .Font.ColorIndex = 5
            End With
     
            With saisie.sheets("Feuil1").Cells(k, 2)
                    .Value = ""
                    .Font.Size = 7
                    .Font.Bold = True
                    .Font.ColorIndex = 5
            End With
     
     
        'selectionner les deux cellules
            With saisie.sheets("Feuil1")
                .Range(.Cells(k, 1), .Cells(k, 2)).Select
            End With
     
        'fusionner les deux cellules
            With selection
                 .HorizontalAlignment = xlCenter
                 .VerticalAlignment = xlBottom
                 .RowHeight = 28.75
                 .WrapText = True
                 .Orientation = 0
                 .AddIndent = False
                 .IndentLevel = 0
                 .ShrinkToFit = False
                 .ReadingOrder = xlContext
                 .MergeCells = False
            End With
            selection.Merge
     
     
            With saisie.sheets("Feuil1").Cells(k + 7, 1)
                    .Formula = "Année Scolaire"
                    .Font.Size = 10
                    .Font.Bold = True
                    .Font.ColorIndex = 5
            End With
     
     
     
       k = k + 1
    Wend
     
    Exit_Commande0_Click:
        Exit Sub
     
    Err_Commande0_Click:
        MsgBox Err.Description
        Resume Exit_Commande0_Click
     
    End Sub
    Erreur qui s’affiche : « VARIABLE OBJET OU VARIABLE DE BLOC WITH NON DEFINIE »[/code]

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Sur quelle ligne se situe l'erreur ?

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Ligne de l'erreur
    Bonjour,

    l'erreur se trouve sur la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     With selection
    HorizontalAlignment=xlCenter
    Mais lorsque je supprime cette ligne, l'erreur se déplace sur la ligne suivante.
    Merci de votre aide

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    C'est quoi selection ? Cette variable n'est déclarée nulle part

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut suite access vers excel
    la variable "selection" correpond aux cellules sélectionnées au niveau de la feuille excel. Elle n'est pas déclarée et je ne sais pas quel type lui donner. Je l'ai déclaré comme Excel.Object ou Excel.Range mais ça ne change rien.
    J'ai créé un macro sous excel et j'ai sélectionné des cellules dans la feuille excel. J'ai constaté dans le code du macro qu'une variable "Selection" avec S a été automatiquement prise en compte. Et c'est ce que j'ai essayé de reproduire sur ma feuille.
    Merci pour tout et bonne fin d'année

  6. #6
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Désolé d'intervenir alors que je ne vais pas pouvoir vous aider, mais je cherche à faire quelque chose que vous avez l'air de maitriser: Ouvrir une feuille Excel à partir d'Access.
    J'ai déjà créé un post la dessus (j'espère que les modérateurs ne m'en voudrons pas de poser des questions ici ainsi que dans mon post) mais on n'a pas encore trouvé la solution à mon problème.

    Question: Savez-vous comment faire pour ouvrir un fichier Excel déjà existant?

    Je désire ouvrir un fichier qui s'appelle 5.xls. Avec l'aide de 2 autres personnes, il semble que le code approprié soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MonExcel As Excel.Application, wb As Excel.workbook
        Set MonExcel = New Excel.Application
        Set wb = MonExcel.Workbooks.Open(FileName:="S:\...\5.xls")
    Mon problème est que rien ne se passe (Excel ne s'ouvre pas donc mon fichier non plus)

    Est-ce que vous pourriez m'aider s'il vous plait?
    Mr White

  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
    Mr White :

    Votre feuille s'ouvre probablement sans que vous ne le voyez. Essayez d'ajouter ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonExcel.Visible = True
    Pensez à mettre en fin du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set MonExcel = Nothing
    Set wb = Nothing
    Rana

    Ton probleme me semb le venir du fait que tes variables "xlApp" et "saisie" sont des variable globales et pas locale (perso je proscris les variables globales). Si tu ne te serts pas de ces objets ailleur, transformes les en variables locales. Si tu t'en serts, modifie ton code pour les passer en argument.

    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
     
    Option Compare Database 
     
     
    Private Sub Commande0_Click() 
    Dim xlApp As Object 
    Dim saisie As Object 
     
    On Error GoTo Err_Commande0_Click 
     
     
        'ouverture d'une appli excel 
            Set xlApp = CreateObject("excel.application") 
            xlApp.Visible = True 
    ......
     
     
    Exit_Commande0_Click: 
    Set xlApp = Nothing
    Set saisie = Nothing
     
        Exit Sub 
     
    Err_Commande0_Click: 
        MsgBox Err.Description 
        Resume Exit_Commande0_Click 
     
    End Sub
    Ca devrait fonctionner.
    A+

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 111
    Points : 53
    Points
    53
    Par défaut
    Merci Muhad'hib car maintenant ça fonctionne.

    Si vous avez le temps, est-ce vous pourriez m'expliquer à quoi servent ces 3 lignes s'il-vous-plait? (sur mon post, cela évitera de polluer celui de Rana )

    Merci encore,
    Mr White

  9. #9
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    Quand vous enregistrez une macro sous excel pour l'intégrer ensuite dans access il faut bien penser que l'enregistrement reflète l'action de l'utilisateur.
    On se retrouve alors avec des sélections partout qu'il FAUT retirer ensuite.

    Il est inutile en VBA de sélectionner une cellule pour changer sa valeur.
    C'est comment si dans access on faisait un setfocus avant de changer la valeur d'un contrôle, c'est inutile et en automation c'est pire ça ralenti énormément l'exécution.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("A1").select
    selection.value = 1
    devient
    de plus range("A1") est un objet Excel et Access ne sait pas quoi en faire
    donc ça devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonObjetFeuilleDansAccess.range("A1").value = 1
    Bye, bon courage.

  10. #10
    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
    Bonnes remarques de Arkham46. Je n'avais pas regarder ce que le code de Mr White faissait dans Excel, juste les pb qu'il avait.

    Mr White :

    Si les trois lignes dont tu parles sont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MonExcel.Visible = True 
    Set MonExcel = Nothing 
    Set wb = Nothing
    MonExcel.Visible = True => rend visible l'application Excel. Quand tu execute la ligne "Set MonExcel = New Excel.Application" tu ouvre un processus Excel mais qui n'est pas afficher dans ta barre de tache. Si à ce moment tu fais un tour dans le gestionnaire des tâches, tu verra dans la liste des processus une ligne Excel. Mais ce processus reste invisible pour l'utilisateur.

    Set MonExcel = Nothing => Affecte "rien" dans l'objet MonExcel. Cela permet de libérer la mémoire prise par cet objet (entre autre)
    Idem pour Set wb = Nothing

    A+

Discussions similaires

  1. Mise en forme conditionnelle sous Excel
    Par crosse9 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/09/2006, 01h50
  2. insérer une nouvelle feuille Excel à partir d' Access
    Par Sebastien_INR59 dans le forum Access
    Réponses: 2
    Dernier message: 06/08/2006, 19h47
  3. Remplissage feuille excel à partir d'un dbGrid
    Par izidor dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 22/02/2006, 19h09
  4. [VBA]Renseigner une feuille excel à partir d'un site web
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/01/2006, 14h43
  5. Réponses: 5
    Dernier message: 05/07/2005, 21h25

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