XL 2016 Compiler les données de différente 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 !

Bebzinda

XLDnaute Nouveau
bonsoir a tous! je veux récupérer uniquement les ligne avec des données d'une feuille contenant un tableau. mais lorsque j'exécute mon code, c'est toute les ligne qui sont récupéré. je précise également que plusieurs colonne du tableau contiennent des formule. alors je me demande si c'est la cause de mon problème? et comment le résoudre? j'ai vraiment besoin et hâte de franchir cette étape. Merci bien
 

Pièces jointes

Bonjour @Bebzinda

Bis repetita

Une remarque tout d'abord :

1) Beaucoup de tes demandes s'appellent Vba ou Copy

Voir la charte :
2.3 – Le titre de la question doit être clair et comporter explicitement le sujet de la demande. Cela sous-entend qu’une nouvelle demande fait l’objet d’un nouveau fil.
2.4 – La question doit être posée le plus clairement possible en comprenant bien que le lecteur ne peut pas s’imaginer le problème.

Et ta réponse de l'époque que tu n'as pas su tenir compte !!!! 🤔

et comment le résoudre?
C'est bien la question que je me posais avec si peu d'élément

Pour info :
On essaye d'aider les demandeurs mais nous ne sommes ni Champollion ni Columbo

Bonne lecture
 
Bonjour @Bebzinda

Bis repetita

Une remarque tout d'abord :

1) Beaucoup de tes demandes s'appellent Vba ou Copy

Voir la charte :
2.3 – Le titre de la question doit être clair et comporter explicitement le sujet de la demande. Cela sous-entend qu’une nouvelle demande fait l’objet d’un nouveau fil.
2.4 – La question doit être posée le plus clairement possible en comprenant bien que le lecteur ne peut pas s’imaginer le problème.

Et ta réponse de l'époque que tu n'as pas su tenir compte !!!! 🤔


C'est bien la question que je me posais avec si peu d'élément

Pour info :
On essaye d'aider les demandeurs mais nous ne sommes ni Champollion ni Columbo

Bonne lecture
slt suis vraiment desolé! excusez moi!
 
Bonjour Bebzinda, Phil69970,
je veux récupérer uniquement les ligne avec des données d'une feuille contenant un tableau.
Voyez le fichier joint et cette macro dans le code de la feuille "Résultat" :
VB:
Private Sub Worksheet_Activate()
Dim cc%
Application.ScreenUpdating = False
Cells.Delete 'RAZ
[Tableau1].ListObject.Range.Copy [A1] 'copier-coller du tableau structuré
cc = UsedRange.Columns.Count + 1
UsedRange.Columns(cc) = "=1/SIGN(COUNTIF(RC1:RC[-1],""><""))" 'colonne auxiliaire
With ListObjects(1).Range
    .Columns(cc) = .Columns(cc).Value 'supprime les formules en colonne auxiliaire
    .Sort .Columns(cc), xlAscending, Header:=xlYes 'tri pour regrouper et accélérer
    On Error Resume Next 'si aucune SpecialCell
    .Columns(cc).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 'supprime les valeurs d'erreur
    .Columns(cc).Delete xlToLeft 'supprime la colonne auxiliaire
End With
End Sub
Elle se déclenche quand on active la feuille.

Les lignes qui ne contiennent pas de données sont supprimées, grâce au tri l'exécution est très rapide même sur de grands tableaux.

Edit : j'avais oublié la fonction SIGN.

A+
 

Pièces jointes

Dernière édition:
Avec un tableau non structuré la macro est un peu différente mais c'est le même principe :
VB:
Private Sub Worksheet_Activate()
Dim cc%
Application.ScreenUpdating = False
Cells.Delete 'RAZ
Sheets("Feuil1").[A1].CurrentRegion.Copy [A1] 'copier-coller du tableau
cc = UsedRange.Columns.Count + 1
With UsedRange.Resize(, cc)
    .Columns(cc) = "=1/SIGN(COUNTIF(RC1:RC[-1],""><""))" 'colonne auxiliaire
    .Columns(cc) = .Columns(cc).Value 'supprime les formules en colonne auxiliaire
    .Sort .Columns(cc), xlAscending, Header:=xlYes 'tri pour regrouper et accélérer
    On Error Resume Next 'si aucune SpecialCell
    .Columns(cc).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 'supprime les valeurs d'erreur
    .Columns(cc).Delete xlToLeft 'supprime la colonne auxiliaire
End With
With Usedrange: End With 'actualise les barres de défilement
Columns.AutoFit 'ajustement largeurs
End Sub
C'est plus rapide qu'avec le tableau structuré : 0,78 seconde sur 90 000 lignes.
 

Pièces jointes

Dernière édition:
Bonjour Bebzinda, Phil69970,

Voyez le fichier joint et cette macro dans le code de la feuille "Résultat" :
VB:
Private Sub Worksheet_Activate()
Dim cc%
Application.ScreenUpdating = False
Cells.Delete 'RAZ
[Tableau1].ListObject.Range.Copy [A1] 'copier-coller du tableau structuré
cc = UsedRange.Columns.Count + 1
UsedRange.Columns(cc) = "=1/SIGN(COUNTIF(RC1:RC[-1],""><""))" 'colonne auxiliaire
With ListObjects(1).Range
    .Columns(cc) = .Columns(cc).Value 'supprime les formules en colonne auxiliaire
    .Sort .Columns(cc), xlAscending, Header:=xlYes 'tri pour regrouper et accélérer
    On Error Resume Next 'si aucune SpecialCell
    .Columns(cc).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 'supprime les valeurs d'erreur
    .Columns(cc).Delete xlToLeft 'supprime la colonne auxiliaire
End With
End Sub
Elle se déclenche quand on active la feuille.

Les lignes qui ne contiennent pas de données sont supprimées, grâce au tri l'exécution est très rapide même sur de grands tableaux.

Edit : j'avais oublié la fonction SIGN.

A+
 
slt merci bien pour votre reaction j'ai texter le code mais cela n'a pas totalement résolu le problème. le fichier ci joint est muni de 2 feuil mais il faudra dupliquer la feuil "Feuil1" au moins deux foi afin de comprendre ma situation. le fichier d'origine est trop volumineux raison pour laquelle je l'ai synthétisé ainsi. maintenant avec les 4 feuils et avec la feuil"Compilation" en dernière , je veux récupérer les informations des trois première Feuil.
 

Pièces jointes

Testez avec cette macro dans le code de la feuille "Compilation" :
VB:
Private Sub Worksheet_Activate()
Dim cc%, rc&
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete 'RAZ
With Sheets("Feuil1").ListObjects(1).Range
    cc = .Columns.Count + 1
    rc = .Rows.Count
    .Copy [A3] 'copier-coller du tableau structuré
End With
Cells(3, cc).Resize(rc) = "=1/SIGN(COUNTIF(RC1:RC[-1],""><""))" 'colonne auxiliaire
With ListObjects(1).Range
    .Columns(cc) = .Columns(cc).Value 'supprime les formules en colonne auxiliaire
    .Sort .Columns(cc), xlAscending, Header:=xlYes 'tri pour regrouper et accélérer
    On Error Resume Next 'si aucune SpecialCell
    .Columns(cc).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 'supprime les valeurs d'erreur
    .Columns(cc).Delete xlToLeft 'supprime la colonne auxiliaire
End With
With UsedRange: End With 'actualise les barres de défilement
Columns.AutoFit 'ajustement largeurs
End Sub
Elle se déclenche quand on active la feuille.
 

Pièces jointes

- 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

Retour