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 !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
J'ai testé, ça marche. Essayez :
VB:
Range("A" & DerLigne).PasteSpecial Paste:=xlPasteValues, _
                    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas