Aide sur macro

Bonjour le Forum,

avec la macro suivante, j'effectue la comparaison de 2 feuilles Excel sur 2 fichiers différents ( qui ont exactement

la même structure) et qui correspondent à un suivi de charge de production.

Je récupère les valeurs d'une feuille "Charge" d'un fichier réalisé le lundi que je colle dans un autre fichier réalisé le jeudi

, toujours dans une feuille "Charge", puis j'effectue une comparaison pour voir l'évolution de la charge, et enfin je supprime

les valeurs que j'ai récupérées (j'espère que j'ai été clair).

Mon problème est que dans la requête, je récupére les valeurs de la feuille "Charge" mais pas les

couleurs associées à certaines cellules.

Comment modifier cette macro pour récupérer aussi les couleurs et la mise en forme.

Merci pour votre aide.

Voici la macro que j'ai pu développer (en me servant de macro trouvée sur le web)

Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
    Dim i, j, Nbligne%

     Application.ScreenUpdating = False

    'Définit le classeur fermé servant de base de données et la feuille
    Fichier = "C:\Users\Patrick\Desktop\Patrick\APP\Macro APP\Extraction essai - Copie.xls"
    NomFeuille = "Charge"

    Set Cn = New ADODB.Connection

    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With

    '---requête---

    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"

    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)

    'Ecrit le résultat de la requête dans la cellule L2
    Range("L2").CopyFromRecordset Rst

    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing

    '---Comparaison ligne par ligne---
    Sheets("Charge").Select
    Nbligne = Application.CountA(Range("B:B"))
    Application.ScreenUpdating = False

    For i = 2 To Nbligne
    For j = 1 To Nbligne

    If Cells(i, 2).Value = Cells(j, 13).Value Then Cells(i, 2).Interior.ColorIndex = Cells(j, 13).Interior.ColorIndex And _
                       Cells(i, 10).Value = Cells(j, 21).Value

   Next j
   Next i

   'Efface le résultat de la requête
   Range("L2:U300").ClearContents

   Application.ScreenUpdating = True
   ThisWorkbook.Save

End Sub

Bonjour Patrick,

Pas sûr que l'on puisse copier les formats de cellules tels que les couleurs lors d'une connexion ADO.

Une solution consiste à ouvrir le fichier temporairement pour en copier le contenu.

Sub RequeteClasseur()
    Dim Fichier As String, NomFeuille As String
    Dim i As Long, j As Long, Nbligne As Long

    Application.ScreenUpdating = False

    'Définit le classeur servant de base de données et la feuille
    Fichier = "C:\Users\Patrick\Desktop\Patrick\APP\Macro APP\Extraction essai - Copie.xls"
    NomFeuille = "Charge"

    'la méthode ici consiste à ouvrir la source, à copier les données et à la refermer
    Workbooks.Open Filename:=Fichier
    'Copie le résultat dans la cellule L2 de la feuille cible dans le classeur actuel
    Sheets(NomFeuille).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets(NomFeuille).Range("L2")
    ActiveWorkbook.Close False    'on ferme le classeur source sans enregistrer

    '---Comparaison ligne par ligne---
    Sheets("Charge").Select
    Nbligne = Application.CountA(Range("B:B"))
    'Application.ScreenUpdating = False 'inutile

    For i = 2 To Nbligne
        For j = 1 To Nbligne

            If Cells(i, 2).Value = Cells(j, 13).Value Then Cells(i, 2).Interior.ColorIndex = Cells(j, 13).Interior.ColorIndex And _
               Cells(i, 10).Value = Cells(j, 21).Value

        Next j
    Next i

    'Efface le résultat de la requête
    Range("L2:U300").ClearContents

    Application.ScreenUpdating = True
    ThisWorkbook.Save

End Sub

Bonjour vba-new,

cela fonctionne parfaitement.

J'ai juste modifier la macro pour supprimer le remplissage en couleurs des cellules.

Merci encore.

NB: si quelqu'un pouvait me répondre sur la copie des formats de cellules avec la connexion ADO, je

suis preneur.

Rechercher des sujets similaires à "aide macro"