Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Récupération valeurs d'un fichier vers un autre vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Quicksland

XLDnaute Occasionnel
Bonjour le forum 😉

Je souhaiterai récupérer les valeurs " fichier pot " toute la colonne a partir "E4" vers "E4" du fichier " prix de revient "

et également pour toute la colonne "N4 " du " fichier pot " vers "C4" du fichier " prix de revient "

Je vous remercie d'avance pour les réponses
 

Pièces jointes

Bonsoir Quicksland,
Un essai en PJ à tester.
La macro à lancer est "Importer"
A noter qu'il y aura surement un problème de février année bissextile vers année non bissextile.
Bonsoir @sylvanu 😉

Merci pour ta réponse 👍

Il y a un petit soucis quand même 🙄

"N4 " du " fichier pot " vers "C4" du fichier " prix de revient "

et non " N4" vers " N4 " 😉

Merci pour ton aide 👍
 
Oups! C'est comme à l'école : quand tu lis mal les consignes, t'as une gamelle ! 😅
Il suffit de remplacer
VB:
Sheets(F.Name).Range("N4:C" & NL).PasteSpecial xlPasteValues
par
Sheets(F.Name).Range("C4:C" & DL).PasteSpecial xlPasteValues
 

Pièces jointes

Bonjour @sylvanu 😉

Je reviens vers toi ...

Apres modification du fichier les données ont changé 🙄

"GESTION-POTS " vers "PRIX DE REVIENT"

Toute la colonne de :

"C4" vers "C4"
"E4" vers "E4"
"F4" vers "F4"
"G4" vers "G4"
"H4" vers "H4"

J'ai réduit le fichier a 6 mois car trop volumineux en PJ

Merci pour ton aide 😉
 

Pièces jointes

Bonsoir,
Il vous suffit d'adapter le code.
Pour transférer d'une colonne à une autre il suffit de faire par ex de C4 vers C4 :
VB:
DL = Sheets(F.Name).Range("C65500").End(xlUp).Row - 1
.Range("C4:C" & DL).Copy
Et recopier ces deux lignes pour vos 5 transferts.
 
Re,
VB:
DL = Sheets(F.Name).Range("E65500").End(xlUp).Row - 1
                .Range("C4:C" & DL).Copy
                Sheets(F.Name).Range("C4:C" & DL).PasteSpecial xlPasteValues

Cela donne ça alors ?
 
Oui, et vous répétez pour les 5 colonnes.
Ok 😉 !

C'est bien ce que j'avais compris mais pourtant cela ne fonctionne pas 🙄
VB:
Private Sub CommandButton2_Click()

    Application.ScreenUpdating = False
    NomFichier = "GESTION - POTS.xlsm"
    FichierCourant = ThisWorkbook.Name
    Workbooks.Open ThisWorkbook.Path & "\" & NomFichier
    Workbooks(FichierCourant).Activate
    For Each F In Worksheets
        If Sheets(F.Name).[E2] = "Coût solide / Prestation" Then
            With Workbooks(NomFichier).Sheets(F.Name)
                DL = Sheets(F.Name).Range("E65500").End(xlUp).Row - 1
                .Range("C4:C" & DL).Copy
                Sheets(F.Name).Range("C4:C" & DL).PasteSpecial xlPasteValues
                .Range("E4:E" & DL).Copy
                Sheets(F.Name).Range("E4:E" & DL).PasteSpecial xlPasteValues
                .Range("F4:F" & DL).Copy
                Sheets(F.Name).Range("F4:F" & DL).PasteSpecial xlPasteValue
                 .Range("G4:G" & DL).Copy
                Sheets(F.Name).Range("G4:G" & DL).PasteSpecial xlPasteValue
                .Range("H4:H" & DL).Copy
                Sheets(F.Name).Range("H4:H" & DL).PasteSpecial xlPasteValue
        
            End With
        End If
    Next F
    Application.CutCopyMode = False
    Workbooks(NomFichier).Close Savechanges:=False
End Sub

Merci pour ton aide 👍
 
Bonsoir,
Dans l'ordre,
1- Par sécurité je vérifier que sur la feuille en E2 il y avait "Coût solide / Prestation" .
maintenant ce n'est plus le cas, donc ça ne pouvait pas marcher. J'ai remplacé par "Format".
2- Comme les colonnes sont vides, DL vaut 2, et avec C4:C2 ça ne marche pas.
J'ai rajouté :
VB:
If DL < 4 Then DL = 4
3- C'est inutile de recopier le code sur toutes les pages, c'est source d'erreur en cas de maintenance, on est sur d'oublier une page.
Donc dans chaque page j'ai mis :
Code:
Private Sub CommandButton2_Click()
    Importer
End Sub
Et en macro classique :
Code:
Sub Importer()
    Application.ScreenUpdating = False
    NomFichier = "GESTION - POTS.xlsm"
    FichierCourant = ThisWorkbook.Name
    Workbooks.Open ThisWorkbook.Path & "\" & NomFichier
    Workbooks(FichierCourant).Activate
    For Each F In Worksheets
        If Sheets(F.Name).[E2] = "Format" Then
            With Workbooks(NomFichier).Sheets(F.Name)
                DL = Sheets(F.Name).Range("E65500").End(xlUp).Row - 1
                If DL < 4 Then DL = 4
                .Range("C4:C" & DL).Copy
                Sheets(F.Name).Range("C4:C" & DL).PasteSpecial xlPasteValues
                .Range("E4:E" & DL).Copy
                Sheets(F.Name).Range("E4:E" & DL).PasteSpecial xlPasteValues
                .Range("F4:F" & DL).Copy
                Sheets(F.Name).Range("F4:F" & DL).PasteSpecial xlPasteValues
                .Range("G4:G" & DL).Copy
                Sheets(F.Name).Range("G4:G" & DL).PasteSpecial xlPasteValues
                .Range("H4:H" & DL).Copy
                Sheets(F.Name).Range("H4:H" & DL).PasteSpecial xlPasteValues
            End With
        End If
    Next F
    Application.CutCopyMode = False
    Workbooks(NomFichier).Close Savechanges:=False
End Sub
 

Pièces jointes

Re bonsoir @sylvanu 😉

Cela fonctionne très bien mais il y a un petit soucis car cela fonctionne juste sur la première ligne 🙄
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
500
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…