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 !!