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

Importer les données de plusieurs feuilles dans une seul feuille

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 !

lostheroe

XLDnaute Occasionnel
Bonjour,

Je souhaiterais a partir d'une macro pouvoir importer tout le contenu des onglets Tarif ABC + Tarif DHV + Tarif CUV dans l'onglet Base article.
En ayant juste a cliquer sur importation des articles.

Merci
 

Pièces jointes

Re : Importer les données de plusieurs feuilles dans une seul feuille

Bonsoir,

Voici une proposition :

VB:
Sub Import()
    Dim i As Integer
    Dim rg As Range, rgP As Range
    Dim wsBase As Worksheet
    
    Set wsBase = ThisWorkbook.Sheets("Base article")
    
    ' on suppose que la base est le 1er onglet, donc on commence au 2e
    For i = 2 To Sheets.Count
        Set rg = Sheets(i).Range("A2:D" & Sheets(i).Range("D65536").End(xlUp).Row)
        Set rgP = wsBase.Range("A65536").End(xlUp).End(xlUp).Offset(1, 0)   'on doit faire 2x .end(xlup) parce que c'est une table
        rg.Copy rgP
    Next i
End Sub

A+
 
Re : Importer les données de plusieurs feuilles dans une seul feuille

Bonjour Grand chaman,

La macro marche bien. Par contre ci on l'a relance une deuxième fois ça marche plus.
Je pense qu'il faudrait effacer l'ensemble du contenu de la feuille Base d'article a chaque lancement de la macro.
Et une petite question subsidiaire. Ci l'on a plus de 3 onglet d'article a importer que faut il modifier dans la macro.

@+
 
Re : Importer les données de plusieurs feuilles dans une seul feuille

Bonjour,

Voici la macro modifiée qui efface les données de l'onglet Base au départ.
L'importation des données commence au 2e onglet et se rend jusqu'au dernier (Sheets.Count). Donc, les données de toutes les onglets sont importées (sauf le 1er). S'il y a des onglets que tu ne veux pas importer les données, tu devras ajouter une condition dans la boucle "For i = ...", en vérifiant le nom de l'onglet par exemple.


VB:
Sub Import()
    Dim i As Integer
    Dim rg As Range, rgP As Range
    Dim wsBase As Worksheet
    
    Set wsBase = ThisWorkbook.Sheets("Base article")
    
    'effacer les données existantes à partir de la ligne 2
    wsBase.Range("A2:D" & wsBase.Range("D65536").End(xlUp).Row).ClearContents
    
    ' on suppose que la base est le 1er onglet, donc on commence au 2e et on se rend au dernier
   For i = 2 To Sheets.Count
        Set rg = Sheets(i).Range("A2:D" & Sheets(i).Range("D65536").End(xlUp).Row)
        Set rgP = wsBase.Range("A65536").End(xlUp).End(xlUp).Offset(1, 0)   'on doit faire 2x .end(xlup) parce que c'est une table
       rg.Copy rgP
    Next i
End Sub

A+
 
Re : Importer les données de plusieurs feuilles dans une seul feuille

Re-bonjour Grand chaman,
J'aurais encore besoin de tes services.
Je souhaiterais arrondir les prix de l'ensemble de la colonne B à la valeur supérieure.
J'ai bien trouver un code vba mais je sais pas comment l'insérer dans ta formule.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Target - Int(Target) > 0 Then
Target = Int(Target) + 1
End If
End If
End Sub
 
Re : Importer les données de plusieurs feuilles dans une seul feuille

Je viens de me rendre compte qu'il y a un probleme avec la macro.
Celle ci copie bien les onglets. Mais au lieu de mettre les valeurs à la suite les une des autres.
Elles efface les valeurs des autres onglets. Ce qui fait que seul le dernier onglet est copier et coller au finale
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…