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 :

Fusion sur X colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Par défaut Fusion sur X colonnes
    Bonjour à vous et encore merci à tous ceux aui m'ont déjà aidé sur ce site.

    On me demande après une exportation de access vers Excel, de modifier par macro la forme du tableau.

    Comme premier point demandé est de créer une ligne avant le titre des colonnes exportes, de modifier la taille du font et la police et de faire une fusion des colonnes.

    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
    Sub fusion()
        Range("A1").Select
        Selection.EntireRow.Insert
        Range("A1:E1").Select
        With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
        .FormulaR1C1 = "FACTURE DU "
        .Font.Name = "Tahoma"
        .Font.Size = 12
        End With
        Selection.Merge
    End Sub
    Ce code fonctionne très bien sauf sur un point. Comme je fais un export à partir d'une requête access, je n'affiche les colonnes qui m'intéresse mais tout dépend de la requête où il y a plus ou moins de colonnes à afficher.

    Le problème est le suivant : je voudrais faire une fusion de colonne de A1 jusqu'à la fin des colonnes exportées.
    Exemple
    fichier1 = fusion de A1 à A18 car ligne 2 va jusqu'a ligne 18
    fichier2 = fusion de A1 à AA5 car ligne 2 va jusqu'a ligne AA5

    Chaque export n'envoyant pas la même nombre de colonne et ceci sur une vingtaine d'export à effectuer.

    Je pense que le code à remplacer est dans le range mais je ne sais pas comment l'écrire.

    Sinon, j'ai aussi une demande où on supprime les colonnes qui sont vides.
    J'ai le code pour enlever des colonnes vides, mais lors de l'export, il récupère le titre de la colonne, la colonne devient donc remplis, mais celle-ci doit être supprimé à partir par exemple de la ligne 3 (ligne 1 = la ligne que je crée pour le titre, ligne 2, le nom de la colonne sous Access)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub sup_col_vides()
        Dim c
        For c = 256 To 1 Step -1
        If Cells(65536, c).End(xlUp).Row = 1 Then Cells(1, c).EntireColumn.Delete
        Next c
    End sub
    et puis faudrait que la recherche s'arrête à la fin des lignes remplies et pas comme dans mon code qui parcourt tout le classeur !!!!!

    j'espère avoir été assez claire.
    Merci à vous !!

  2. #2
    Membre émérite
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 545
    Par défaut
    bonsoir,

    si il n'y a pas de colonne vides au milieu de la plage,

    change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(65536, c).End(xlUp).Row = 1 Then Cells(1, c).EntireColumn.Delete
    par ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(65536, c).End(xlUp).Row = 1 Then exit sub
    sinon, ajoute ça pour connaitre la dernière colonne remplie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dercol = Cells(1, 256).End(xlToLeft).Column

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 173
    Par défaut
    Merci SuperMichou pour la suppression de colonne même s'il y a le titre qui est entré.

    Par contre, je ne sais pas trop où mettre ta deuxième syntaxe pour trouver la dernière colonne remplie.

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

Discussions similaires

  1. Afficher un tableau sur la fusion des deux colonnes de l'article
    Par slaima15 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 18
    Dernier message: 13/10/2010, 02h35
  2. DBGrid - Affichage sur 2 colonnes
    Par Grouik dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/04/2004, 17h37
  3. doublon et trie sur autre colonne
    Par Force59 dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/04/2004, 09h02
  4. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  5. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47

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