Consolider des données de plusieurs feuilles

Bonsoir à toutes et à tous,

Je viens vous trouver en ultime recours pour un problème sur lequel je sèche depuis plusieurs semaines. En effet, j'aimerais consolider des données de plusieurs feuilles dans une autre. Explications.

J'ai plusieurs feuilles qui comprennent la liste des devis réalisés par mon entreprise, une par année. Pour chaque devis, j'ai un statut "À facturer", "Commandé" ou "À archiver". J'ai également une feuille pour chaque statut et j'aimerais que dans ces feuilles soient regroupés tous les devis correspondants. Par exemple, dans la feuille "À facturer", j'aimerais que soient listés tous les devis (peu importe qu'ils soient dans la feuille devis 2013, devis 2014) qui ont pour statut "À facturer".

Voilà, je ne sais pas si c'est clair étant donné que c'est un cas de figure un peu particulier, mais votre aide me serait précieuse en sachant que je ne "code" pas sur Excel, car je n'ai jamais pratiqué la programmation sur ce logiciel. Toutefois je suis ouvert à toute proposition.

En vous remerciant et en vous souhaitant une agréable soirée.

bonsoir

un fichier exemple serait la bienvenue, anonymé de préférence

Fred

Oui, bien entendu. Voici un fichier d'exemple simpliste.

D'avance merci pour votre aide.

45exemple-devis.xlsx (23.09 Ko)

Bonjour

voici une proposition as tester donc...

le bouton qui lance la macro est sur l'onglet 2013 mais il peut être placer n'importe ou dans le fichier

a chaque lancement cela supprime les données déjà existante dans les onglets archives/commander/a facturer et remet a jour tous

ces 3 onglets en fonction de tous les autres

tous les onglets peuvent être renommés et mis dans un ordre différents...

on peu faire des bordures si nécessaire dans ces 3 onglets

Fred

76exemple-devis.xlsm (32.63 Ko)

Waouh ! cela me semble fonctionner à merveille.

Pouvez-vous me donner de plus amples explications sur le fonctionnement ? Car il arrivera un moment où il faudra ajouter une feuille pour 2015.

D'avance merci.

elle sera automatiquement traitée...

je vais mettre des explications dans le codes et reposter un fichier

fred


voici une version bis du fichier dans lequel j'ai commenté le code et simplifier un peu plus le code

a tester

Fred

Merci pour votre temps passé sur mon fichier.

Cependant, où puis-je voir vos commentaires ? De plus, je dois préparer chaque feuille "Devis" pour environ 200 devis et non pas 22 comme dans le fichier d'exemple. Est-ce possible ?

pour voir le code et les commentaires il faut ouvrir l'editeur VBA Project (ALT+F11) et aller voir le module 1 (partie gauche)

sinon la macro du fichier s'adapte automatiquement au nombre de lignes présentent dans chaque onglet et quelque soit le nombre d'onglet a traiter...

après suivant le nombre de ligne et d'onglet et la puissance de l'ordinateur cela peut être plus ou moins long....

fred

Concrètement, comment fonctionne la macro ? Elle cherche dans toutes les feuilles autres que les trois de consolidation pour savoir si il y a un état "À facturer" etc ?

D'avance merci.


Encore une petite question : serait-il possible que depuis mes feuilles À facturer, Commandé, Archiver je puisse également choisir l'état de chaque devis ? Ainsi je n'ai pas besoin de retourner dans une des feuilles qui regroupent tous les devis afin d'effectuer le changement.

Je ne sais pas si c'est suffisamment clair.

bon comme j'ai déjà expliquer tout dans le code voici le code que tu n'arrive pas lire visiblement ...

Sub consolider()
Dim i As Byte
Dim j As Integer
'appel sous fonction pour effacer le contenu des feuilles commander/facturer / archiver
RAZ_feuilles
For i = 1 To Sheets.Count 'on va parcourir toutes les feuilles
    'si le codename de la feuille a traiter est différent du codename des feuilles archiver/facturer/commander
    If Sheets(i).CodeName <> "feuil3" And Sheets(i).CodeName <> "feuil4" And Sheets(i).CodeName <> "feuil5" Then

        If Sheets(i).Range("A65536").End(xlUp).Row > 3 Then 'si la derniere ligne utilisée de la feuille en cours de traitement est suppérieure a 3
            'on va parcourir toutes les lignes de la feuille sur laquelle on est en partant de la ligne 4
            For j = 4 To Sheets(i).Range("A65536").End(xlUp).Row
            Select Case Sheets(i).Range("K" & j) 'suivant ce qui est mis dans la cellule K lig en cours de traitement
            Case ("À facturer"): copie (i), (j), Feuil3.Name 'on va copier les lignes dans l'onglet facturer
            Case ("Commandé"): copie (i), (j), Feuil4.Name 'on va copier les lignes dans l'onglet commander
            Case ("Archiver"): copie (i), (j), Feuil5.Name 'on va copier les lignes dans l'onglet archiver
            End Select

            Next 'ligne suivante
        End If
    End If
Next i 'feuille suivante
End Sub
Sub copie(source As Byte, lig As Integer, dest As String)
Dim derlig As Integer
With Sheets(dest)
'recupere la derniere ligne utiliser dans la feuille de destination +1
derlig = .Range("A65536").End(xlUp).Row + 1
'copie de la feuille source vers la feuille de destination les colonnes A à D + G à J en fonction de la ligne passée en paramètre
Sheets(source).Range("A" & lig & ":D" & lig & ",G" & lig & ":J" & lig).Copy .Range("A" & derlig)
End With
End Sub
Sub RAZ_feuilles()
'si il y a des données a supprimer on supprime pour les 3 feuilles
If Feuil3.Range("A65536").End(xlUp).Row > 3 Then Feuil3.Range("A4:H" & Feuil3.Range("A65536").End(xlUp).Row).Delete
If Feuil4.Range("A65536").End(xlUp).Row > 3 Then Feuil4.Range("A4:H" & Feuil4.Range("A65536").End(xlUp).Row).Delete
If Feuil5.Range("A65536").End(xlUp).Row > 3 Then Feuil5.Range("A4:H" & Feuil5.Range("A65536").End(xlUp).Row).Delete
End Sub

pour ce qui est de la deuxième question oui cela est possible mais là il faut que je me creuse nettement plus la tete.... a voir sur le we prochain sauf si quelqu'un passe par là et le fasse avant moi...

fred

Voilà que je reviens seulement vers vous, j'en suis navré j'ai été particulièrement occupé ces derniers temps.

Finalement votre première version conviendra amplement. Je vous remercie énormément pour votre résolution de mon problème.

Bonne soirée

Rechercher des sujets similaires à "consolider donnees feuilles"