XL 2013 VBA - Copier coller valeurs uniquement - Macro consolidation

Comfortably_Numb

XLDnaute Junior
Bonjour à tous,

Je rencontre une point gênant avec ma macro. Elle consolide des fichiers se trouvant dans un dossier spécifique, jusque là tout va bien.

Là où ça commence à se compliquer, c'est que dans les tableaux qu'elle consolide il y a des remplissages, des bordures éventuellement qui ne m'intéressent pas.
Je suis parvenu à lui faire supprimer cela.

En revanche, je rencontre un dernier problème, lié au fait que dans les tableaux d'origine il y a des recherches V.
Je souhaiterais que la macro ne copie-colle que les valeurs des cellules.

J'ai consulté des forums, mais le
VB:
PasteSpecial Paste:=xlValues
ne semble pas correspondre car ça bug.

Quelqu'un a-t-il une solution ?

Voici le code en question (le collage se fait ligne 78) :

VB:
Option Explicit

'   Déclaration des variables

Dim NomClasseur As String
Dim LigneTotal As Integer
Dim DerLigne As Integer




'   Procédure permettant la consolidation de plusieurs classeurs


Sub Consolider()

'   On désactive le raffraichissement de l'écran
    Application.ScreenUpdating = False

'   Etape 1 : Création des en-têtes

'   On réinitialise le fichier synthèse

    Columns("A:AG").Clear
    Range("A1").Value = "UE"
    Range("B1").Value = "Site"
    Range("C1").Value = "Type"
    Range("D1").Value = "N°"
    Range("E1").Value = "Bailleur / Preneur"
    Range("F1").Value = "Libellé affaire"
    Range("G1").Value = "Client"
    Range("H1").Value = "Emetteur de la demande"
    Range("I1").Value = "Interlocuteur NPM"
    Range("J1").Value = "Date de demande à l'étude"
    Range("K1").Value = "Etape"
    Range("L1").Value = "Commentaire"
    Range("M1").Value = "Date réception devis"
    Range("N1").Value = "Nbre de jours dépassés"
    Range("O1").Value = "Délai Ok/Hors délai"
    Range("P1").Value = "Montant devis retenu"
    Range("Q1").Value = "Origine budget"
    Range("R1").Value = "Imputation"
    Range("S1").Value = "Libellé racine OI"
    Range("T1").Value = "Date accord budget"
    Range("U1").Value = "Groupe acheteur"
    Range("V1").Value = "N° DA"
    Range("W1").Value = "Montant Da saisie auto"
    Range("X1").Value = "Date validation DA"
    Range("Y1").Value = "N° Commande"
    Range("Z1").Value = "Date envoi (MGA) commande"
    Range("AA1").Value = "N° devis fournisseur"
    Range("AB1").Value = "Date livraison"
    Range("AC1").Value = "Date du PV de réception"
    Range("AD1").Value = "Date clôture de la demande"
    Range("AE1").Value = "N° du 101 PGI"
    Range("AF1").Value = "Statut"
    
'   Etape 2 : Parcourir les fichiers du dossier préféfini

    ChDir "C:\Users\jdarras\Desktop\TDB"
'   On cherche le premier classeur dans le dossier
    NomClasseur = Dir("C:\Users\jdarras\Desktop\TDB\*.*")
'   On boucle pour chercher tous les classeurs Excel

    While Len(NomClasseur) > 0
            Application.DisplayAlerts = False   '   Désactive les boîtes de dialogue Excel
            Workbooks.Open NomClasseur  '   Ouverture du classeur
            
            With ActiveSheet.Cells  '   On affiche les colonnes éventuellement masquées
            .EntireColumn.Hidden = False
            End With
            
            LigneTotal = ActiveSheet.UsedRange.Rows.Count   '   On récupère le nombre de ligne de données
            Range("A3:AF" & LigneTotal).Copy    '   On copie toutes les données de la feuille active
            Workbooks("Classeur1.xlsm").Activate    '   On revient sur le classeur de synthèse
            DerLigne = ActiveSheet.UsedRange.Rows.Count + 1 '   On recherche la dernière ligne vide de la feuille active
            Range("A" & DerLigne).Select    '   On se positionne sur la dernière ligne vide de la feuille
            ActiveSheet.Paste   '   On colle les données
            Range("AG" & DerLigne & ":AG" & ActiveSheet.UsedRange.Rows.Count) = NomClasseur '   On colle le nom du classeur sur la colonne AG
            Workbooks(NomClasseur).Close    '   Fermeture du classeur ouvert
            NomClasseur = Dir   '   On passe au prochain classeur
                                    
    Wend

'   Etape 3 : Modifier les mises en forme

    Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete  '   On efface les lignes dont la première cellule est vide
    Range("A:AF").ClearFormats  '   On supprime les formats
    Range("J:J,M:M,T:T,X:X,Z:Z,AB:AB,AC:AC,AD:AD").Select
    Selection.NumberFormat = "m/d/yyyy" '   On remet les formats date aux bonnes colonnes
    Columns("A:AF").ColumnWidth = 10.27 '   On définit la largeur des colonnes
        
    
'   Etape 4 : Supprimer l'extension des fichiers

    Columns("AG").Replace ".xlsm", ""   '   On retire l'extension des fichiers .xlsm en colonne AG
    Columns("AG").Replace ".xlsx", ""   '   On retire l'extension des fichiers .xlsx en colonne AG
        
    
    MsgBox "La consolidation est terminée."
'   On réactive le raffraichissement de l'écran
    Application.ScreenUpdating = True
    
End Sub

Merci pour votre aide !
 

Discussions similaires

Réponses
8
Affichages
615

Statistiques des forums

Discussions
311 711
Messages
2 081 786
Membres
101 817
dernier inscrit
carvajal