XL 2010 Copie de données de plusieurs feuilles dans une seule

Renaud22

XLDnaute Junior
Bonjour à tous,

J'aurais besoin qu'on m'aide à concevoir un code VBA afin de permettre la copie de données de différentes feuilles dans une seule feuille.

Dans fichier ci-joint (Exemple 1.xlsm), pour chaque feuille visible (nom et nombre variés : 001, 002,...XX) contenant les caractères "ID :" en "B8" et des caractères différents de "xx" en "C8", copier toutes les valeurs (même nulles) des cellules "AI2 à AK2", de la première feuille (à gauche) dans les cellules "E10 à QG10" de la feuille BDIST. Répéter les mêmes étages pour la deuxième feuille en copiant les cellules "AI2 à AK2" à la suite de la plage "E10 à QG10" soit dans les cellules "E11 à QG11" de la feuille BDIST et ainsi de suite jusqu'à la dernière feuille contenant les caractères "ID :" en "B8" et des caractères différents de "xx" en "C8".

Une fois toutes les données copiées, des filtres devront être appliqués dans les cellules "E9 à QG9" de la feuille BDIST afin de trier ou rechercher des données précises.

En vous remerciant par avance pour votre précieuse aide.

Salutations,

Renaud22
 

Pièces jointes

  • Exemple 1.xlsm
    436.3 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Renaud,
Un essai avec ce que j'ai compris :
VB:
Sub Consolide()
Dim Nom$, F, L%
Nom = ActiveSheet.Name
L = 10
[E10:QG1000].ClearContents
For Each F In Worksheets
    If F.Name <> Nom Then
        With Sheets(F.Name)
            If .[C7] <> "" And .[B8] <> "ID" And .[C8] <> "" Then
                Range(Cells(L, "E"), Cells(L, "QG")) = .Range("AI2:RK2").Value
                L = L + 1
            End If
        End With
    End If
Next F
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("E6:QG" & [E60000].End(xlUp).Row).AutoFilter
End Sub
 

Pièces jointes

  • Exemple 1.xlsm
    446.4 KB · Affichages: 4

Renaud22

XLDnaute Junior
Bonjour sylvanu,

Merci beaucoup pour votre aide. J'ai changé la ligne : "If .[C7] <> "" And .[B8] <> "ID" And .[C8] <> "" Then" pour : " If .[B8] = "ID :" And .[C8] <> "xx" Then" afin de tenir compte de mes contraintes. Tout fonctionne donc à merveille.

Sincères salutations,

Renaud22
 

Renaud22

XLDnaute Junior
Bonjour Renaud,
Un essai avec ce que j'ai compris :
VB:
Sub Consolide()
Dim Nom$, F, L%
Nom = ActiveSheet.Name
L = 10
[E10:QG1000].ClearContents
For Each F In Worksheets
    If F.Name <> Nom Then
        With Sheets(F.Name)
            If .[C7] <> "" And .[B8] <> "ID" And .[C8] <> "" Then
                Range(Cells(L, "E"), Cells(L, "QG")) = .Range("AI2:RK2").Value
                L = L + 1
            End If
        End With
    End If
Next F
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("E6:QG" & [E60000].End(xlUp).Row).AutoFilter
End Sub
Bonjour sylvanu,

Il y a un mois, vous aviez conçu, pour moi, une macro permettant de copier, dans une seule feuille récapitulative (BDREE), des données provenant de différentes feuilles de données. J'ai modifié légèrement le code VBA afin de l'adapter à mes besoins. Tout fonctionne très bien.

Maintenant, je veux augmenter le nombre de lignes de données par feuille. Je joins le fichier Exemple_1.zip dans lequel j'ai un nombre quelconque de feuilles de données (dans ce cas : 4 : 001_ACEP, 002_ACEP, 003_INTCM & 004_PCONA). Quand j'exécute la macro " BDREE", celle-ci ne tient compte uniquement de la plage AJ27 à CA27 pour chacune des feuilles de données. Le résultat est représenté dans la feuille "BDREE".

Je voudrais que, dans une feuille de données :

si AR27 égale "0" la copie de la plage AJ27 à CA27 ne soit pas effectuée et on passe à la feuille suivante ;
si AR39 égale "0" la copie de la plage AJ27 à CA27 soit effectuée et on passe à la feuille suivante ;
si AR51 égale "0" la copie des plages AJ27 à CA27 et AJ39 à CA39 soit effectuée et on passe à la feuille suivante ;
si AR63 égale "0" la copie des plages AJ27 à CA27, AJ39 à CA39 et AJ51 à CA51 soit effectuée et on passe à la feuille suivante ;
etc....

Donc, la condition pour laquelle la copie change de feuille, est si les cellules AR27, ou AR39, AR51, AR63,... égale "0". Le nombre de feuilles de données est variable ainsi que le nombre de lignes de données par feuille de données.

J'ai représenté dans la feuille "BDREE_DESIRE", le résultat désiré (exemple avec 4 feuilles de données).

Si vous pourriez modifier la macro " BDREE" afin qu'elle puisse remplir les nouvelles exigences, cela serait très apprécié.

En vous remerciant par avance pour votre précieuse aide.

Salutations,

Renaud22
 

Pièces jointes

  • Exemple_1.zip
    329.4 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Renaud,
Un essai en PJ si j'ai bien tout compris.
NB: J'ai enregistré en xlsb qui est de taille beaucoup plus petite.
C'est idem que xlsm mais n'est pas compatible d'Android.
Il vous suffit de le ré enregistrer en xlsm.
L'avantage c'est qu'on peut le poster sans le zipper. 228ko au lieu de 1250ko.
 

Pièces jointes

  • Exemple_1.xlsb
    227.6 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
314 704
Messages
2 112 055
Membres
111 410
dernier inscrit
yomeiome