IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro VBA de recherche et d'extraction de valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 104
    Par défaut Macro VBA de recherche et d'extraction de valeur
    Bonjour,

    je ne parviens pas à mes fins et mes recherches ne m’apporte pas la solution. Je demande votre aide !

    J'ai un fichier, comportant 3 colonnes de valeur à partir de la ligne 50 sur environ 200 lignes.

    Une des colonnes présente des valeur allant grosso modo de 0.0001 à 10.

    Je souhaite faire une extraction de ce tableau pour les lignes comportant des valeurs supérieur à 0.1 dans la deuxième colonne.

    Je souhaite que ça me crée un second tableau à coté, qui viennent me copié à la suite toutes les lignes du précédent tableau vérifiant cette condition.

    Et là je sèche.. !

    merci d'avance.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    pas besoin de macro pour cela, un filtre avancé suffit..

    menu Données avancée

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    En supposant que les 3 colonnes soient contiguës (A, B et C) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test2()
    Dim C As Range, ligne As Long
    ligne = 49
    For Each C In Range([B50], Cells(Rows.Count, 2).End(xlUp))
        If C.Value > 0.1 Then
            ligne = ligne + 1
            Cells(ligne, 4).Resize(, 3).Value = C.Offset(, -1).Resize(, 3).Value
        End If
    Next C
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 104
    Par défaut
    @bbil
    bonjour ,j'ai besoin d'une macro pour après l'intégrer dans un processus plus général qui traite des données.

    @Daniel.C
    génial, . Merci beaucoup ça marche !

    je l'ai remodifié ainsi, pour la mettre au formalisme de mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Bouton1_Cliquer()
     
    Dim C As Range, ligne As Long
    ligne = 50
    For Each C In Range([B51], Cells(Rows.Count, 2).End(xlUp))
        If C.Value > 0.1 Then
            ligne = ligne + 1
            Cells(ligne, 11).Resize(, 4).Value = C.Offset(, -1).Resize(, 4).Value
        End If
    Next C
    End Sub
    dans mon fichier il s'agit en fait de paquet de ligne qui vont remplir la condition entrecoupé de lignes qui ne satisferont pas la condition.

    est il possible de séparer ces paquet par une ligne vide ou une ligne rempli de zéro ou autre,

    puis d'extraire à nouveau, par paquet une ligne correspondant au max ( par paquet ) trouvé sur la deuxième colonne?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Oui, un filtre automatique ou avancé... à condition d'avoir des entêtes.

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 104
    Par défaut
    comment puis-je traduire ça en VBA ?

    merci d'avance

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Franchement, pour deux centes lignes, le gain de temps sera infinitésimal En supposant que tu n'aies pas d'entêtes et que la cellule B49 soit vide (sinon, il faut insérer une ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test4()
        Dim Plage As Range
        [B49] = "entête"
        Set Plage = Range("A49:C" & Cells(Rows.Count, 1).End(xlUp).Row)
        ActiveSheet.AutoFilterMode = False
        Plage.AutoFilter 2, ">.1"
        Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 1)
        If Application.Subtotal(103, Plage) > 0 Then
            Plage.Copy [D50]
        End If
        [B49] = ""
        ActiveSheet.AutoFilterMode = False
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche mot dans .PDF avec macro VBA
    Par klemsy20 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/09/2019, 14h15
  2. Réponses: 2
    Dernier message: 22/04/2014, 13h40
  3. [XL-2003] Plage de recherche variable dans macro VBA
    Par CampaSC dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2011, 18h27
  4. [Débutant] Recherche conditionelle et extraction de valeurs dans un tableau
    Par juliematlab dans le forum MATLAB
    Réponses: 10
    Dernier message: 10/05/2011, 16h36
  5. macro vba pour rechercher/remplacer
    Par amadou78 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/02/2010, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo