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 :

Présentation en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut Présentation en VBA
    Bonjour à tous, alors voila, je suis en stage et on m'a demandé de faire un script pour mettre en forme un tableau. Je précise, je fais des requêtes SQL dont j'exporte les résultats dans une feuille Excel, ce qu'il me faudrait, c'est un script qui permettrait de quadriller le tableau où il y a des données uniquement bien entendu, d'ajuster la taille des colonnes et des lignes à la taille des données, de faire en sorte que le tableau tienne sur une page (en largeur parceque les tableaux font souvent plusieurs pages), ce qui fait qu'au final, l'utilisateur aurait juste à exporter le résultat dans Excel et à appuyer sur Imprimer sans se poser de questions...

    Si vous avez des pistes de départ ou bien encore mieux une idée précise de comment procéder, je suis preneur. Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Fais la manipulation avec l'enregistreur de macro (Outils/Macro/Nouvelle Macro), cela va te créer un module (Alt+F11) pour le visualiser.

    Tu n'as plus qu'à éplucher le code VBA.

    Starec

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Bonjour et Merci

    Alors, voila ce que ça me donne quand je quadrille une case comme je veux

    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
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    maintenant, ce que je voudrais savoir, c'est comment faire pour qu'il m'applique ça sur toutes les cases ou il y a des données... et aussi savoir si c'est possible d'avoir un classeur Excel par défaut dans lequel s'executera le quadrillage automatique et tout le reste dés que j'exporte les données de ma BDD vers le classeur... Je ne connais pas grand chose à la syntaxe en VBA, mais je suppose que le parcours d'un tableau doit toujours être dans le style du C genre

    while(contenu>0)
    {
    quadriller;
    colonne+1;
    ligne+1;
    }
    quelqun peut me dire vaguement comment ça se traduit en VBA ?

    Merci d'avance

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Citation Envoyé par Tiresia
    Bonjour et Merci

    Alors, voila ce que ça me donne quand je quadrille une case comme je veux

    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
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    maintenant, ce que je voudrais savoir, c'est comment faire pour qu'il m'applique ça sur toutes les cases ou il y a des données... et aussi savoir si c'est possible d'avoir un classeur Excel par défaut dans lequel s'executera le quadrillage automatique et tout le reste dés que j'exporte les données de ma BDD vers le classeur... Je ne connais pas grand chose à la syntaxe en VBA, mais je suppose que le parcours d'un tableau doit toujours être dans le style du C genre



    quelqun peut me dire vaguement comment ça se traduit en VBA ?

    Merci d'avance
    bonjour à tous

    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
    dim cel as range
    for each cel in sheets.cells
    if cel.value > "" then 
      cel.Borders(xlDiagonalUp).LineStyle = xlNone
        With cel.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    next
    mais cela risque d'etre tres long, il faut limité la selection

    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
    dim cel as range
    for each cel in Range("A1:F50") ' Traite la plage definie
    if cel.value > "" then 
      cel.Borders(xlDiagonalUp).LineStyle = xlNone
        With cel.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With cel.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    next
    bonne journée

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Merci bien, petit sushi, il me met lors de l'execution :

    "Erreur d'execution 1004, impossible de définir la propriété LineStyle de la classe Border"

  6. #6
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Citation Envoyé par Tiresia
    Merci bien, petit sushi, il me met lors de l'execution :

    "Erreur d'execution 1004, impossible de définir la propriété LineStyle de la classe Border"

    re:


    oui je viens de le voir, la procedure traite cellule par cellule donc les deux bloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    n'ont pas lieu d'etre etant donné que dans une cellule il ne paut pas y avoir de lignes medianes horisontales ou verticales

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Merci, déja la ça marche bien, alors maintenant je me pose la question suivante :

    Est ce que c'est possible de faire en sorte que cette Macro soit présente dans un classeur par défaut dans lequel j'irais exporter les Résultats de mes requêtes SQL et qu'elle soit executée automatiquement quand j'ouvre le classeur, ce qui fait que je n'aurais plus rien à faire en présentation à la main, il me suffira d'enregistrer ensuite le classeur avec les résultats sous un autre nom que le classeur par defaut pour pouvoir l'utiliser autant de fois que je veux...j'espere être assez clair, merci d'avance

  8. #8
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    c'est deja plus compliqué, il va falloir structurer les manips.
    C'est possible, mais l'ouveture du fichier doit se faire pas la macro elle meme, ainsi que la sauvegarde.

    un fichier exemple(sans renseignements indiscrets) me semble necessaire maintenant.

    salutations

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Plus simplement, est ce que ce ne serait pas possible d'enregistrer cette Macro dans un fichier excel et ensuite, après avoir exporté mes résultats dans un autre fichier, d'utiliser la Macro dans la feuille d'origine sans avoir à l'ouvrir...mh...je crois que le plus simple va rester encore d'enregistrer la macro au format texte et de la copier dans les fichiers concernés... je me trompe ?

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Un fichier exemple, oh ce n'est pas bien compliqué, je suis dans une boite de logistique et je fais par exemple un listing des emplacements palettes existants avec une colonne n° de Rack, une colonne étage, une colonne profondeur, une colonne bâtiment, une colonne etat... et ça va me sortir un tableau à 38 000 lignes et le nombre de colonnes sera fonction du nombre de renseignements que je souhaite avoir. Ce résultat, je peux l'enregistrer au format Excel, par exemple "Emplacements.xls" mais je ne peux pas exporter uniquement les resultats vers la feuille Excel ou il y a ma macro sinon j'ecrase tout :s Voila si ce n'est pas clair, n'hesitez pas et merci de votre aide

  11. #11
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    comme je dis c'est faisable sans maipulation supplementaire, mais le 1er classeur doit tout piloté

    voici un exemple :

    bonne soirée

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Merci du coup de main, finalement, on m'a dit que les utilisateurs feraient un copier coller des resultats dans la feuille ou il y a le script alors le problème ne se pose plus, me reste plus qu'à faire un bouton pour executer le script.

    Bonne fin de journée

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

Discussions similaires

  1. [PPT-2013] Conserver la mise en forme source des présentations en VBA
    Par fidecourt dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 13/03/2013, 11h17
  2. [PPT-2007] Macro VBA copie présentation
    Par audran12 dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 03/05/2012, 14h12
  3. supprimer une image sur une présentation powerpoint avec VBA
    Par Mati68 dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 12/12/2007, 14h51
  4. VBA-Excel:Présentation d'un tableau (insertion ligne de légende)
    Par gabrielle_dl dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 15/06/2006, 11h11

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