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 :

Additionner des valeurs d'une colonne à une autre colonne mais sur certaines lignes seulement ! [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Additionner des valeurs d'une colonne à une autre colonne mais sur certaines lignes seulement !
    Bonjour à toutes et à tous,

    Je suis planté de chez planté :

    J'ai des fichiers, tous identiques à l'intérieur en termes de format mais pour des données différentes. En fait il s'agit d'adresses qui sont réparties sur différents commerciaux (un fichier par commercial).

    Un onglet "CUMUL" contient les colonnes "RUE" "N°" "CUMUL ACTUEL" cumul actuel étant le nombre de courrier envoyé à cette adresse depuis le début de l'année.
    L'autre onglet "A AJOUTER" contient les colonnes "RUE" et "APPEL" appels étant le nombre d'appels téléphoniques sur cette voie.

    Mon directeur commercial ayant décidé qu'1 appel est égal à 1 courrier, je dois ajouter "APPEL" à "CUMUL ACTUEL" mais comme je n'ai pas les n° de rue dans l'onglet "AJOUTER" pour croiser facilement la chose, il a décidé qu'on ajouterait "APPEL" à "CUMUL ACTUEL" sur la ligne correspondant au n° de rue le plus petit de la voie.

    Sur un fichier je pourrai le faire à la main sur plus de 700 fichiers !! Pitiè !

    Je vous ai mis le fichier en pièce jointe, merci de votre aide, mon but au final est de me monter un fichier où je collerai un bouton "sélectionner un fichier" et lancerai le code sur ce fichier sélectionné...

    Encore merci d'avance...
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour CyberLudo, bonjour le forum,

    Peut-être comme ça :
    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 Macro1()
    Dim C As Object 'déclare la variable C (onglet CUMUL)
    Dim PL As Range 'déclare la variable PL (PLage)
     
    'attention il y avait un espace avant le premier A : " A AJOUTER", je l'ai supprimé
    Dim A As Object 'déclare la variable A (onglet A AJOUTER)
     
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellule)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim PLV As Range 'déclare la variable PLV (PLage Visible)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
    Dim NM As Integer 'déclare la variable NM (Numéro Minimum)
    Dim LI As Integer 'déclare la variable LI (LIgne)
     
    Set C = Sheets("CUMUL") 'définit l'onglet C
    Set PL = C.Range("B3").CurrentRegion 'définit la palge PL
    Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, 1) 'redéfinit la palge PL (uniquement la première colonne et sans la première ligne)
    Set A = Sheets("A AJOUTER") 'définit l'onglet A (Attention à l'espace !)
    DL = A.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernièe ligne éditée DL de la colonne 2 (=B) de l'onglet A
    TC = A.Range("B4:C" & DL) 'définit le tableau de cellules TC
    For I = 1 To UBound(TC, 1) 'boucles 1 :sur toutes les ligne du tableau TC
        NM = 10000 'initialise le numéro minimum NM (une valeur forcément supérieure à n'importe quel numéro de voie)
        'condition 1 : si il existe au moins une occurrence de la RUE du tableau TC dans la colonne B de l'onglet C
        If Not C.Columns(2).Find(TC(I, 1), , xlValues, xlWhole) Is Nothing Then
            C.Range("B3").AutoFilter Field:=1, Criteria1:=TC(I, 1) 'filre en B3 la colonne B de l'onglet C avec TC(I,1) = la RUE comme critère
            Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV (cellules visibles, non filtrées, de la palge PL)
            For Each CEL In PLV.Offset(0, 1) 'boucle 2 : sur toutes les cellules CEL de la plage PLV
                If CEL.Value < NM Then 'condition 2 : si la cellule est inférieure à NM
                    NM = CEL.Value 'redéfinit MN qui vaut la valeur la cellule CEL
                    LI = CEL.Row 'définit la ligne LI contenant la valeur mninimale
                End If 'fin de la condition 2
            Next CEL 'prochaine cellule de la boucle 2
            If TC(I, 2) <> 0 Then 'condition 3 : si [Appels] est différent de zéro
                C.Cells(LI, 4).Interior.ColorIndex = 3 'colore la cellule modifiée de rouge
                C.Cells(LI, 4).Value = C.Cells(LI, 4) + TC(I, 2) 'ajoute l'[Appels] au [CUMUL ACTUEL]
            End If 'fin de la condition 3
        C.Range("B3").AutoFilter 'supprime le filtre automatique
        End If 'fin de la condition 1
    Next I 'prochaine ligne de la boucle 1
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Ok ça marche super !!!
    Encore merci pour ton aide...

    Ludo

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

Discussions similaires

  1. Afficher des valeurs en fonction d'une autre valeur
    Par flobos dans le forum Access
    Réponses: 2
    Dernier message: 15/06/2015, 08h03
  2. [XL-2010] Rechercher des valeurs en fonction d'une autre valeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/02/2015, 16h10
  3. [PHPExcel] Récupération des valeurs via liaison vers une autre feuille
    Par thbmath dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/12/2012, 21h41
  4. Réponses: 6
    Dernier message: 11/12/2007, 17h55
  5. [C#] Conserver des valeurs de propriétés d'une page
    Par elod38 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/03/2005, 10h53

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