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

Excel Discussion :

Modification de valeur de champ en double


Sujet :

Excel

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut Modification de valeur de champ en double
    Bonjour,

    j'ai trois colonnes sur excel : A B et C.

    dans la colonne A, j'ai une liste de numéro (non identique) : et dans la colonne B et C,
    j'ai des numéros qui eux peuvent être idnetiques sur une même colonnne.
    j'aiemerais, sans tri, analyser chaque ligne et :

    si le couple de chiffre B et C en en double, mettre en A la valeur de la première cellule A qui correspond à ce
    même couple.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    A   B   C
     
    5   8   2
     
    7   2   5
     
    9   8   2
     
    2   1   9
     
    5   2   5
    dans ce cas, là la valeur de A dans la 3ème ligne doit être de 5, puisque le couple B et C est le même.

    Et la valeur de A dans la 6 ème ligne (qui est égale à 5) prendrait la valeur 7, car le couple B, C qui vaut 2 et 5
    à déjà été rencontré.

    Merci d'avance pour votre aide.

  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
    Bonsoir Sam, bonsoir 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
    Sub Macro1()
    Dim O As Object 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim PV As Integer 'déclare la variable PV (Première Valeur)
     
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
    DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O
    TC = O.Range("A1:C" & DL) 'définit le tableau de cellules TC
    For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau TC (en partant de la seconde)
        PV = TC(I, 1) 'définit la première valeur PV
        For J = 2 To UBound(TC, 1) 'boucle 2 : sur toutes les lignes du tableau TC (en partant de la seconde)
            'si texte concatené de la ligne I, valeur en colonne 2 et valeur en colonne 3 du tableau TC est égal
            'au texte concatené de la ligne J, valeur en colonne 2 et valeur en colonne 3 du tableau TC
            'la cellule ligne J, colonne 1 (=A) de l'onglet O prend la valeur de PV
            If CStr(TC(J, 2)) & CStr(TC(J, 3)) = CStr(TC(I, 2)) & CStr(TC(I, 3)) Then O.Cells(J, 1).Value = PV: TC(J, 1) = PV
        Next J 'prochaine ligne de la boucle 2
    Next I 'prochaine ligne de la boucle 1
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    Salut,

    merci,

    j'ai plutôt utilisé ce code :

    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
     
    Sub sansdoub()
    Dim derlig&, tablo, dico, i&, clef
      With Feuil1
        derlig = .Range("a" & .Rows.Count).End(xlUp).Row
        tablo = .Range("a1:c" & derlig)
        Set dico = CreateObject("scripting.dictionary")
     
        For i = 1 To derlig
          clef = tablo(i, 2) & "/" & tablo(i, 3)
          If Not dico.exists(clef) Then
            dico.Add clef, tablo(i, 1)
          Else
            tablo(i, 1) = dico(clef)
          End If
        Next i
     
        .Range("a1").Resize(derlig, 3) = tablo
      End With
    End Sub

Discussions similaires

  1. Modification des valeurs d'un champs
    Par zeartist dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/01/2013, 16h35
  2. [AC-2007] Modification des valeurs d'un champ
    Par l'coy dans le forum Access
    Réponses: 1
    Dernier message: 04/05/2011, 17h20
  3. envoyé valeur dans champ par double clic
    Par marcmarc150 dans le forum IHM
    Réponses: 0
    Dernier message: 10/12/2009, 20h42
  4. Réponses: 5
    Dernier message: 05/09/2007, 16h23
  5. [Smarty] Valeur des champs en modification
    Par lodan dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 24/07/2006, 20h05

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