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 :

Probleme de code sur ma boucle et la somme de données correspondant à ma sélection [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 Probleme de code sur ma boucle et la somme de données correspondant à ma sélection
    Bonjour à tous,

    Je suscite votre aide car je suis bloqué avec mon code,

    Le but de ce code est :
    -Chaque cellule de la colonne A de la page DATABASE contiennent des catégories
    -Ce code va chercher la catégorie de la cellule dans la page TRAITEMENT
    -Faire la somme de toutes les cellules sur la meme ligne (Numero de colonne indéterminé) de la page Traitement
    -Renvoyer le resultat de cette somme dans la colonne C de la page DATABASE à la ligne de cette même catégorie


    J'ai 2 soucis avec ce code :
    - Premier problème => il doit sommer toutes les cellules correspondant à la catégorie par exemple :
    Si dans la page DATABASE la cellule A2 est "catégorie 1" il doit aller chercher dans la colonne A page TRAITEMENT la "Categorie 1" et ensuite faire la somme de toutes les celulles sur cette meme ligne jusqu'à la derniere cellule de la dernière colonne pleine.

    - Deuxieme problème => dans le code ci dessous il fait toujours la meme somme, il ne prend pas en consideration le résultat de la recherche V pour aller faire la somme des cellules correspondantes à ce choix

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    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 dans la page traitement, il devra afficher le résultat dans la page Database colonne 3 à la ligne correspondante à la catégorie testée
     
    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")
    L = Sheets("Traitement").Range("A" & Rows.Count).End(xlUp).Row
    M = Sheets("Traitement").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
     
     
        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
        For i = 1 To L
     
          C.Offset(, 3).Formula = "=sum(Traitement!" & Cells(i, 1).Address & _
    ":" & Cells(i, M).Address & ")"
         Next
     
            End If
         Next C
    End With
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par alexklond Voir le message
    Bonjour,

    A tester :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Sub Recherche()
     
    Dim AireDataBase As Range, CelluleDataBase As Range
    Dim LigneTitreDataBase As Long, DerniereLigneDataBase As Long
     
    Dim AireTraitement As Range, CelluleTraitement As Range
    Dim LigneTitreTraitement As Long, DerniereLigneTraitement As Long, DerniereColonneTraitement As Long, ColonneTraitement As Long
     
        With Sheets("DATABASE")
             LigneTitreDataBase = 1
             DerniereLigneDataBase = .Cells(.Rows.Count, 1).End(xlUp).Row
             Set AireDataBase = .Range(.Cells(LigneTitreDataBase + 1, 1), .Cells(DerniereLigneDataBase, 1))
        End With
     
        With Sheets("Traitement")
             LigneTitreTraitement = 1
             ColonneTraitement = 1
             DerniereLigneTraitement = .Cells(.Rows.Count, ColonneTraitement).End(xlUp).Row
             DerniereColonneTraitement = .Cells(LigneTitreTraitement, .Columns.Count).End(xlToLeft).Column
             Set AireTraitement = .Range(.Cells(LigneTitreTraitement, ColonneTraitement), .Cells(DerniereLigneTraitement, ColonneTraitement))
        End With
     
        For Each CelluleDataBase In AireDataBase
            For Each CelluleTraitement In AireTraitement
                If CelluleTraitement = CelluleDataBase Then
                   ' Si la formule dans DATABASE doit être la dernière colonne de la ligne trouvée dans TRAITEMENT
                   'With Sheets("Traitement")
                   'DerniereColonneTraitement = .Cells(CelluleTraitement.Row, .Columns.Count).End(xlToLeft).Column
                   'End With
                   CelluleDataBase.Offset(0, 3).Formula = "=sum(Traitement!" & CelluleTraitement.Address & _
                     ":" & CelluleTraitement.Offset(0, DerniereColonneTraitement - ColonneTraitement).Address & ")"
                   Exit For
                End If
            Next CelluleTraitement
        Next CelluleDataBase
     
        Set AireDataBase = Nothing
        Set AireTraitement = Nothing
     
    End Sub

  3. #3
    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
    Merci beaucoup Eric pour ton aide,

    en analysant bien le code j'ai compris mon erreur, il faut que mon code soit plus structuré ... et ma façon d'organiser mon code également...

    merci encore pour ton aide précieuse

  4. #4
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Je vois que ce nouveu post est la suite de ton précédent post, il aurait été plus judicieux de continuer sur le même post et pas le mettre en résolu.
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  5. #5
    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
    bonjour Ryu,

    en effet, il m a paru plus judicieux de refaire un poste mieux expliqué avec un code que j'ai essayé de développer pour montrer que j'essaye de réaliser même si je ne suis pas un pro du vba.

    merci pour ta critique constructive.

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

Discussions similaires

  1. [MySQL] Optimisation du code sur les boucles
    Par izguit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/08/2009, 15h05
  2. Demande d'aide pour un problème de code source sur devC++
    Par Rickantonais dans le forum Débuter
    Réponses: 28
    Dernier message: 01/08/2007, 14h09
  3. {VBA Excel}Probleme de code sur l'export Excel à Word
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/06/2007, 10h59
  4. probleme de novice sur boucle vba
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/06/2007, 21h08

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