Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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
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.
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.
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.
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.
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.
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.
effectivement! j'ai supprimer plusieurs feuil afin de réduire sa taille et je l'ai délibérément laissé ainsi pour vous rappeler que ce sont des formule dans certaine cellule.
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
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.