Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion lola51
  • Date de début Date de début

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 !

L

lola51

Guest
Bonjour le forum,
J’ai une feuille bd (données externes, requête sur web), je voudrais récupérer les données sans les entêtes.
J'ai essayé plusieurs solutions ; formule index, recherche ... il faut toujours des critères.

Ci-joints pj

Cordialement
 

Pièces jointes

Re : extraire

Bonjour lola51 et bienvenu sur le forum, Bonjour Toto ; )
D'après les rûnes magiques du chaman de mon village:
Une proposition par macro, avec création de la feuille Récap. La ligne d'en tête utilisée est la 11em de la feuille Bd.
A noter que la feuille bd de l'exemple s'appelle "bd ". Attention pour le vrai fichier.
VB:
Private Sub CommandButton1_Click()
Dim i As Long
Dim F As Worksheet
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
Set F = Sheets("extrait")
On Error GoTo 0
If Not F Is Nothing Then F.Delete
Sheets("bd ").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "extrait"
With Sheets("extrait")
    Sheets("bd ").Rows(11).Copy .Cells(1, 1)
    For i = .Cells(Rows.Count, 1).End(3).Row To 2 Step -1
        If .Cells(i, 2).Value = "" Or Not IsNumeric(.Cells(i, 2).Value) Then .Rows(i).Delete
    Next i
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Cordialement
 

Pièces jointes

Re : extraire

Bonjour lola et Bienvenue sur XLD,
Salut Tototiti,
Salut Efge,
en A2 :
Code:
=SI(LIGNES($2:2)<=SOMME(N(ESTNUM(Col_A)));INDEX(Col_A;PETITE.VALEUR(SI(ESTNUM(Col_A);LIGNE(INDIRECT("1:"&LIGNES(Col_A))));LIGNES($2:2)));"")
@ valider par Ctrl+Maj+Entree
@ tirer vers le bas

en B2 :
Code:
=SI(OU($A2="";COLONNE()>31);"";RECHERCHEV($A2;DECALER(Col_A;;;;COLONNE());COLONNE();0))
@ valider par Simple Entree
@ tirer vers le bas et vers la droite

Voir PJ
Amicalement

Edit : A1 et B1
 

Pièces jointes

Dernière édition:
Re : extraire

Merci a tous,
Pour la formule matricielle

=SI(LIGNES($2:2)<=SOMME(N(ESTNUM(Col_A)));INDEX(Col_A;PETITE.VALEUR(SI(ESTNUM(Col_A);LIGNE(INDIRECT("1:"&LIGNES(Col_A))));LIGNES($2:2)));"")

Je voudrais savoir a quoi correspond (SOMME(N(ESTNUM) le N après de somme, simon pour le reste j'ai compris.
Pour la macro si j'actualise les données externes le nombre d'entête peut varier chaque jour.
et merci encore
A+
 
Re : extraire

Rebonjour,
Je voudrais savoir a quoi correspond (SOMME(N(ESTNUM) le N après de somme, simon pour le reste j'ai compris.
ESTNUM(PLAGE) va renvoyer des VRAI pour les valeurs numeriques et des FAUX pour les non numeriques, N() va convertir les VRAI en 1 et et les FAUX en 0 comme ca on peut avoir la SOMME().
Amicalement
 
Re : extraire

Re à tous, Bonjour Rachid 🙂
Pour la macro:
Le nombre d'en têtes est inconnu on peux en avoir de 1 à X. Quand je disais que l'en tête récupéré est en ligne 11, ce n'était qu'un précision.
On peux récupérer l'en tête sans connaitre son emplacement, et même prévoir sa possible absence:
VB:
Private Sub CommandButton1_Click()
Dim i As Long
Dim F As Worksheet, Rw As Range
With Application: .DisplayAlerts = False: .ScreenUpdating = False: End With
On Error Resume Next
    Set F = Sheets("extrait")
On Error GoTo 0
If Not F Is Nothing Then F.Delete
Sheets("bd ").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "extrait"
With Sheets("extrait")
    Set Rw = .Columns(1).Find("N°Entrée")
    
    If Not Rw Is Nothing Then
        .Rows(Rw.Row).Copy .Cells(1, 1)
    Else
        MsgBox "Pas de ligne d'en tête dans la base", 64, "Attention"
        .Rows(1).Insert
    End If
        
    For i = .Cells(Rows.Count, 1).End(3).Row To 2 Step -1
        If .Cells(i, 2).Value = "" Or Not IsNumeric(.Cells(i, 2).Value) Then _
        .Rows(i).Delete
    Next i
    .Columns.AutoFit
End With
With Application: .DisplayAlerts = True: .ScreenUpdating = True: End With
End Sub
@ Rachid : Superbe formule, qui se permet de finir par un smiley ; 0 ) ) . Du grand art 😀

Cordialement
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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