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 :

Rapprocher les valeurs en fonction de leur rapprochement


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Rapprocher les valeurs en fonction de leur rapprochement
    bonjour,

    jai tésté plusieur formule et je ne trouve pas voici mon probleme!

    Sur la feuil1! les colonnes ((AB) valeur x et y)) et ((DE) valeur X et Y))
    Ces colonne on une longueur aléatoire comment trié (les chiffre de la colonne DE) de façon a ce que par exemple le chiffre 100 de la colonne DE ce retrouve en face de ( 99 ou 100 de la colonne AB)

    merci par avance

  2. #2
    Membre averti Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Points : 377
    Points
    377
    Par défaut
    avec une macro :

    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
    Public Sub trie()
     
        Set F1 = Worksheets("Feuil1")
     
        With F1
     
            Nblig1 = .Cells(.Rows.Count, 1).End(xlUp).Row
            Nblig2 = .Cells(.Rows.Count, 2).End(xlUp).Row
            If Nblig1 >= Nblig2 Then
                nblig = Nblig1
            Else
                nblig = Nblig2
            End If
            i = 0
     
            Do
     
               i = i + 1
               Set a1 = .Cells(i, 1)
               Set a2 = .Cells(i, 2)
     
               If a1.Value < a2.Value Then
                    a2.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
               Else
               If a1.Value > a2.Value Then
                    a1.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
               End If
               End If
     
            Loop Until (a1 = "" And a2 = "")
     
     
        End With
     
    End Sub
    Delphine35
    « N’attribuez jamais à la malveillance ce qui s’explique très bien par l’incompétence. » - Napoléon Bonaparte

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut merci mé ca fonctionne pas :-(
    le macro fait bugé excel je continue a tésté en modifient les célules D7 et D8 puisque mon trie commence en D7 mais rien ne change !! merci tous de meme ;-) je laisse en fichier exemple bien commenté merci d'avance
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Points : 377
    Points
    377
    Par défaut
    Alors comme ca :

    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
    Public Sub trie()
     
     Dim NbLig1, NbLig2, valOK As Integer
     
        Set F1 = Worksheets("exemple1")
     
        With F1
     
            NbLig1 = .Cells(.Rows.Count, 1).End(xlUp).Row
            NbLig2 = .Cells(.Rows.Count, 5).End(xlUp).Row
     
            For i = 7 To NbLig1
     
               valOK = 9999
               posOK = 0
               aa = .Cells(i, 1).Value
               bb = .Cells(i, 2).Value
     
               For j = i To NbLig2
                    ' Formule qui permet de definir la priorité
                    valeur = (.Cells(j, 5).Value - aa) * 10 + (.Cells(j, 6).Value - bb)
     
                    If valeur < 0 Then
                        valeur = valeur * -1
                    End If
                    If valeur < valOK Then
                        valOK = valeur
                        posOK = j
                    End If
               Next j
     
               .Range("E" & posOK & ":G" & posOK).Copy
               .Range("E" & i & ":G" & i).Insert Shift:=xlDown
               .Range("E" & posOK + 1 & ":G" & posOK + 1).Delete Shift:=xlUp
               .Range("H" & i).Value = .Range("C" & i).Value
     
            Next i
     
        End With
     
    End Sub
    Delphine35
    « N’attribuez jamais à la malveillance ce qui s’explique très bien par l’incompétence. » - Napoléon Bonaparte

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut merci de mavoire consacré du temps
    mais ça fonctionne toujours pas le trie et fait en partie.
    la colone AB a plus de donné que la colone DE ce qui fait que les dernière ligne AB son vide allor que des donné proche son présente en DE ce si dit ton macro et sympas meme si je suis nul en macro je continue à tésté ça merci beaucoup

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/01/2012, 16h37
  2. Réponses: 5
    Dernier message: 27/10/2011, 15h54
  3. [PHPExcel] Agrandir les cellules en fonction de leur contenu
    Par KDZCrew dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/05/2011, 12h08
  4. recopier les valeur en fonction de combobox en cascade
    Par adriennoob dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2010, 19h00

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