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

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

  • GESTION - POTS.xlsm
    318.2 KB · Affichages: 10
  • Prix de revient.xlsm
    371.5 KB · Affichages: 7

Quicksland

XLDnaute Occasionnel
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 :rolleyes:

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

et non " N4" vers " N4 " ;)

Merci pour ton aide 👍
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Prix de revient (V2).xlsm
    366.3 KB · Affichages: 3

Quicksland

XLDnaute Occasionnel
Bonjour @sylvanu ;)

Je reviens vers toi ...

Apres modification du fichier les données ont changé :rolleyes:

"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

  • GESTION - POTS.xlsm
    311.4 KB · Affichages: 1
  • PRIX DE REVIENT.xlsm
    676.3 KB · Affichages: 2

Quicksland

XLDnaute Occasionnel
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 ?
 

Quicksland

XLDnaute Occasionnel
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 :rolleyes:
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 👍
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • PRIX DE REVIENT.xlsm
    744.4 KB · Affichages: 4

Quicksland

XLDnaute Occasionnel
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
Re bonsoir @sylvanu ;)

Cela fonctionne très bien mais il y a un petit soucis car cela fonctionne juste sur la première ligne :rolleyes:
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
433

Statistiques des forums

Discussions
314 485
Messages
2 110 101
Membres
110 663
dernier inscrit
ToussaintBug