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 :

Sommes d'une plage variable dans une autre page en prenant comme repère de ligne le résultat de la recherche V [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Par défaut Sommes d'une plage variable dans une autre page en prenant comme repère de ligne le résultat de la recherche V
    Bonjour à tous,

    j'essaye d'écrire un code pour sommer une plage de cellule variable correspondant à un résultat de recherche V

    Dans ce code j'ai réussi à faire la recherche V cependant je suis bloqué pour faire ma somme sur la ligne correspondant au résultat de la recherche dans la page "Traitement"

    En faite ce que je veux faire : c est résumé dans un tableau la somme des données correspondant à une catégorie dans la page principale,
    la difficulté ici est que le nombre de colonne peut être variable,

    Par ex :
    page Principle colone A sont les catégories
    page Traitement : colonne A les catégories et dans les colonnes suivantes ça sera toutes les données, il peut y avoir des données jusqu'a W...

    Ce que je veux faire dans la page principale c est que :
    chaque cellule de la colonne A seront testées et si le résultat est trouvé => Faire la somme dans la colonne 3 => de toutes les cellules sur la meme ligne (Numero de colonne indéterminé) de la page Traitement.

    Pour le moment j'ai mis une SUM fixe pour tester le code : cela marche mais je veux que la plage de cellule ici soit variable en fonction du nombre de cellule remplit pour cette catégorie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub recherche()
    
    'il va réaliser une recherche V à partir du nom des catégories et si il trouve, il va sommer toutes la ligne correspondante de la page Traitement
    
    Dim P As Range, C As Range, Teste
    
    With Sheets("DATABASE")
        Set P = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
    End With
    
    With Sheets("Traitement")
        
        For Each C In P
            Teste = Application.VLookup(C.Value, .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp)), 1, 0)
            
            If IsError(Teste) Then
            C.Offset(, 3) = ""
            Else
            C.Offset(, 3) = "=SUM(Traitement!B2:I2)"
            End If
         Next C
    End With
    End Sub
    Merci pour votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Par défaut
    Pourriez vous m éclairer sur la marche à suivre pour réaliser ce code Vba svp ?

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par alexklond Voir le message
    j'essaye d'écrire un code pour sommer une plage de cellule variable correspondant à un résultat de recherche V
    Dans Excel, pour rechercher un numéro de ligne correspondant à une recherche, on n'utilise pas RECHERCHEV mais EQUIV.
    https://support.office.com/fr-FR/art...9-533f4a37673a

    Dans VBA, personnellement, j'essaye d'éviter d'utliser les fonctions Excel, surtout quand il existe une alternative VBA.
    Donc, pour faire une recherche en VBA, on utilise la méthode Find de l'objet Range.
    https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx

    Dernière chose : éviter d'utiliser des mots correspondant à des objets existant comme par exemple nommer une macro "recherche" alors qu'il existe une fonction de ce nom dans Excel.
    https://support.office.com/fr-FR/art...1-369d5e3864cb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub marecherche()
    Dim Plage As Range, Critere As Range, Source As Range, Resultat As Range
     
    Set Plage = Sheets("DATABASE").Range("A2", Sheets("DATABASE").Cells(Rows.Count, 1).End(xlUp))
    Set Source = Sheets("Traitement").Range("A2", Sheets("Traitement").Cells(Rows.Count, 1).End(xlUp))
     
    For Each Critere In Plage
        Resultat = Source.Find(Critere.Value)
     
        Critere.Offset(0, 3).Value = ""
        If Not Resultat is Nothing Then Critere.Offset(0, 3).Value = Application.Evaluate("SUM(Traitement!B2:I2)")
    Next Critere
     
    End Sub

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 02/11/2015, 05h43
  2. Réponses: 3
    Dernier message: 30/05/2012, 09h24
  3. Variable dans une fonction appelée par une autre fonction
    Par CyrilD dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2010, 13h42
  4. [XL-2003] Rechercher une variable dans une plage de données
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/11/2009, 11h56

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