Problème Excel

Fermé
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012 - 15 févr. 2012 à 10:57
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 16 févr. 2012 à 11:18
Bonjour a tous,

J'ai un petit soucis avec excel... Je vais essayer de l'expliquer le plus clairement possible.

J'ai besoin d'informations de deux tableaux excel différents. 3 colonnes d'un tableau et 3 colonnes de l'autre. Pour simplifier les choses, disont que du premier tableau j'ai besoin de colonnes 1, 2 et 3, et du deuxième tableau j'ai besoin de colonnes A, B et C.

Dans mon nouveaux tableau, j'ai donc colonnes 1,2,3,A,B et C a l'affilé. Ce que j'aimerai faire maintenant c'est que j'aimerai trier la colonne 1 en ordre croissant mais que les colonnes 2 et 3 reste en relation avec la colonne 1. Et en plus de ça j'aimerai que les celulles de la colonne A qui correspondent a la colonne 1 soit au même niveau que celle-ci et que les colonnes B et C correspondent a la colonne A.

Dites moi si c'est pas clair, je vous aiderais a comprendre :)

Merci d'avance!

Guillaume


A voir également:

6 réponses

Lentzouille2 Messages postés 806 Date d'inscription samedi 22 octobre 2011 Statut Membre Dernière intervention 13 janvier 2020 39
Modifié par Lentzouille2 le 15/02/2012 à 11:02
Bonjour,

Oui pas trop clair ton truc sachant que 1,2,3 sur excel sont des lignes, mais bon bref,

Ce que je ne comprend pas c'est ton tri,
Car quand tu tri une colonne par ordre croissant les autres colonnes suivent le pas (c'est a dire que si tu as 2 en B5 et 7 en C5, avant ton tri, tu retrouvera 2 en B2 et 7 en C2, en ayant trié que sur ta colonne B)

Du coup... je ne vois pas ton problème ....

Et en plus de ça j'aimerai que les celulles de la colonne A qui correspondent a la colonne 1 soit au même niveau que celle-ci et que les colonnes B et C correspondent a la colonne A.
Et là je suis totalement perdu ...

Edit: tu peux déposé ton fichier via cjoint.com et coller le lien ici

"La vie c'est comme une boite de chocolat, on ne sait jamais sur quoi on va tomber"
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 11:18
J'avoue ne pas avoir été très clair...

En gros j'ai 6 colonnes qui viennent de 2 tableau différents, colonnes A, B, C, D, E et F. Colonnes A,C et E viennent d'un premier tableau et colonnes B,D et F viennent d'un autre tableau. Colonnes A et B reprennent les mêmes infos: un numéro d'achat. Donc, pour donner un exemple, le numéro en A1 correspond ac une date en C1 et un montant en E1, et le numéro en B1 correspond ac une date en D1 et un montant en F1. Ce que j'aimerai obtenir, c'est un tableau ou la colonne A est triée en ordre croissant, que les colonnes C et E suivent ce tri (donc qu'après le tri, le numéro en A1 corresponde a la date en C1 et le montant en E1), et que les valeurs en B qui correspondent avec les valeurs en A se mettent au même niveau que celles ci (donc que quand la valeur en A1 = 0,6 et que la valeur en B18 = 0,6 celle ci se mettent l'une a coté de l'autre en A1 et B1) et finalement je voudrais que, comme ac les colonnes A,C et E, les colonnes B, D et F restent en relation (donc que le numéro en B1 corresponde tjs a la date en D1 et le montant en F1).

J'espère que c'est plus clair comme ça...

Par contre je ne peux pas déposé mon fichier sur ce site car les informations sont confidentielles... désolé.

Merci pour ton aide en tout cas!

Guillaume
0
Lentzouille2 Messages postés 806 Date d'inscription samedi 22 octobre 2011 Statut Membre Dernière intervention 13 janvier 2020 39
15 févr. 2012 à 11:28
C'est horrible ton truc ... j'en ai mal au crane ...

Que ça soit confidentielle ou pas, remplace tes données par des valeurs test et ... met le fichier sur cjoint !!
C'est un casse tete à lui tout seul !!
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 11:53
https://www.cjoint.com/?3Bpl0qlh0OB

Voila le tableau, j'ai changé toutes les données par des données test donc pas de soucis.
Encore merci!
0
Lentzouille2 Messages postés 806 Date d'inscription samedi 22 octobre 2011 Statut Membre Dernière intervention 13 janvier 2020 39
15 févr. 2012 à 12:01
ça m'aide un peu plus ...
mais si tu fais un tri par ordre croissant sur ta colonne A ça ne t'avance pas ?
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 12:13
Si, mais le soucis c'est que les autres colonne ne suivent pas...
Et vu que je ne m'y connais que très peu en excel je ne sais pas comment régler le problème...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
15 févr. 2012 à 13:31
Bonjour,
Excusez l'incruste...
Certaines lignes contiennent en C une valeur et en A rien... Comment tu fais???
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 13:34
les lignes qui contiennent une valeur en C et rien en A peuvent être supprimer. En fait les cellules A sont celle qui importe.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
15 févr. 2012 à 13:36
Encore une question :
Certaines cellules en A qui possèdent plusieurs correspondances en B, que fait-on ?
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 14:11
Il les faut aussi donc a ce moment la vous pouvez laisser des celulles vides après la celulle A jusqu'à ce qu'il n'y ai plus de correspondance ac les cellules B puis reprendre ac la suite. (p.e. A1=0,6 ; B1=0,6, B2=0,6, B3=0,6 puis poursuivre avec A2=0,7; B4=0,7) Donc il ne faut pas absolument que les cellules A et B soit les mêmes. Merci de ton aide!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
15 févr. 2012 à 14:42
Et pour les valeurs contenues dans la colonne B mais pas dans la colonne A???
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 14:45
Pareil que pour C et A. Ce ne sont que les valeurs en A qui compte
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 14:45
Les valeurs en B qui n'ont pas de correspondant en A peuvent donc être supprimées
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
15 févr. 2012 à 16:03
Bon j'me suis pris la tête pendant 2 heures, je n'arrive pas à la simplifier...
Un résultat approchant de ce que je crois que tu souhaites...
Option Explicit

Sub test()
Dim TabloACE(), TabloBDF(), DrLig As Long, Lign As Long, Col As Integer
Dim IndicC As Integer, IndicL As Long
Dim Valeur As Integer
Dim i As Integer, j As Integer
Dim Cible1 As Variant, Cible2 As Variant, Cible3 As Variant

With Sheets("Sheet4")
'remplir la var TabloACE des données contenues en colonnes A, C & E
    IndicC = 3
    IndicL = Application.CountA(.Columns(1)) - 1
    ReDim TabloACE(1 To IndicC, 1 To IndicL)
    IndicC = 1
    IndicL = 1
    DrLig = .Range("A" & Rows.Count).End(xlUp).Row
    For Lign = 2 To DrLig
        If .Cells(Lign, 1) <> "" Then
            For Col = 1 To 6 Step 2
                TabloACE(IndicC, IndicL) = .Cells(Lign, Col)
                IndicC = IndicC + 1
            Next Col
            IndicC = 1
            IndicL = IndicL + 1
        End If
    Next Lign
'trier la variable tableau ACE
    Do
        Valeur = 0
        For i = 1 To UBound(TabloACE, 2) - 1
            If TabloACE(1, i) > TabloACE(1, i + 1) Then
                Cible1 = TabloACE(1, i)
                Cible2 = TabloACE(2, i)
                Cible3 = TabloACE(3, i)
                TabloACE(1, i) = TabloACE(1, i + 1)
                TabloACE(2, i) = TabloACE(2, i + 1)
                TabloACE(3, i) = TabloACE(3, i + 1)
                TabloACE(1, i + 1) = Cible1
                TabloACE(2, i + 1) = Cible2
                TabloACE(3, i + 1) = Cible3
                Valeur = 1
            End If
        Next i
    Loop While Valeur = 1
'remplir la var TabloBDF des données contenues en colonnes B, D & F
'si on trouve en colonne B une des valeurs de A
    IndicL = 1
    DrLig = .Range("B" & Rows.Count).End(xlUp).Row
    For i = 1 To UBound(TabloACE, 2)
        For Lign = 2 To DrLig
            If TabloACE(1, i) = .Cells(Lign, 2) Then
                If i > 1 Then
                    If TabloACE(1, i) <> TabloACE(1, i - 1) Then
                        ReDim Preserve TabloBDF(1 To 3, 1 To IndicL)
                        TabloBDF(1, IndicL) = .Cells(Lign, 2)
                        TabloBDF(2, IndicL) = .Cells(Lign, 4)
                        TabloBDF(3, IndicL) = .Cells(Lign, 6)
                        IndicL = IndicL + 1
                    End If
                Else
                    ReDim Preserve TabloBDF(1 To 3, 1 To IndicL)
                    TabloBDF(1, IndicL) = .Cells(Lign, 2)
                    TabloBDF(2, IndicL) = .Cells(Lign, 4)
                    TabloBDF(3, IndicL) = .Cells(Lign, 6)
                    IndicL = IndicL + 1
                End If
            End If
        Next Lign
    Next i
End With
MsgBox IndicL
'restitution des données triées et réparties dans une nouvelle feuille
ThisWorkbook.Worksheets.Add
Lign = 1
With ActiveSheet
    .Cells(Lign, 1) = TabloACE(1, 1)
    .Cells(Lign, 3) = TabloACE(2, 1)
    .Cells(Lign, 5) = TabloACE(3, 1)
    For i = 1 To UBound(TabloBDF, 2)
        If TabloACE(1, 1) = TabloBDF(1, i) Then
            .Cells(Lign, 2) = TabloBDF(1, i)
            .Cells(Lign, 4) = TabloBDF(2, i)
            .Cells(Lign, 6) = TabloBDF(3, i)
            Lign = Lign + 1
        End If
    Next i
    For j = 2 To UBound(TabloACE, 2)
        .Cells(Lign, 1) = TabloACE(1, j)
        .Cells(Lign, 3) = TabloACE(2, j)
        .Cells(Lign, 5) = TabloACE(3, j)
        If TabloACE(1, j) <> TabloACE(1, j - 1) Then
            For i = 1 To UBound(TabloBDF, 2)
                If TabloACE(1, j) = TabloBDF(1, i) Then
                    .Cells(Lign, 2) = TabloBDF(1, i)
                    .Cells(Lign, 4) = TabloBDF(2, i)
                    .Cells(Lign, 6) = TabloBDF(3, i)
                    Lign = Lign + 1
                End If
            Next i
        End If
        Lign = Lign + 1
    Next j
    DrLig = .Range("B" & Rows.Count).End(xlUp).Row
    'suppression des lignes vides
    For Lign = 1 To DrLig
        If Application.CountA(.Rows(Lign)) = 0 Then
            .Rows(Lign).Delete
        End If
    Next
End With
End Sub

Je sais ça à l'air trash... Mais bon quelqu'un d'autre trouvera surment (certainement même) mieux...
Désolé...
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 16:29
Waw! :o par contre je n'ai aucune idée de comment je dois remplir cela sur excel...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
15 févr. 2012 à 16:39
Re-
1- Tu ouvres UNE COPIE DE ton fichier,
2- tape ALT+F11,
3- Insertion/Module
4- copier coller le code placé plus haut.
5- fermer la fenêtre visual basic editor

6- Pour l'utiliser, tu retournes sous ta feuille Sheet4, tape ALT+F8, choisir test et cliquer sur exécuter...

Regarde ton fichier exemple sans les feuilles inutiles...
0
moutzamout Messages postés 10 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 16 février 2012
16 févr. 2012 à 11:15
Bonjour Pijaku,
Tout d'abord merci bcp pour ton aide et le temps que tu as mis a solutionné mon problème! Le résultat est impressionant. Par contre je n'arrive pas a un bon résultat en remplissant ton code dans excel, même si j'ai vu que mon fichier de départ que tu as modifier est exactement ce que je recherche... Peut-être pourrais-tu m'éclairer sur ce qui pourrait être le problème? Merci d'avance,

Guillaume
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
16 févr. 2012 à 11:18
Bonjour,
Sans ton fichier original je ne peux pas t'aiguiller davantage.
Tu peux me l'envoyer en Messagerie Privée, tu l'as trouveras dans mon profil en cliquant sur mon pseudo.
0