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 :

Ordonner un tableau 2D


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Par défaut Ordonner un tableau 2D
    bonjour à tous,
    voilà je rencontre un petit problème,
    je fais un programme pour les statistiques du basket , et en ce moment j'enregistre le tableau de chacun des matchs dans un même workbook dans une feuille différente à chaque fois. Les tableaux ont tous la même forme (voir n'importe quelle photo en pièce jointe) et la même taille et sont positionnés au même endroit dans chaque feuille.

    Or mon problème c'est qu'en fonction des matchs, les joueurs ne sont pas les mêmes et ils ne sont pas ordonnés de la même façon dans chacun des tableaux. Ainsi ce que je souhaiterai faire c'est prendre une feuille pour référence, c'est à dire un tableau de référence et ordonner tous les autres de la même façon. Par exemple si je choisi comme référence le tableau de la photo4 qui si situe par exemple dans la feuille 1, j'aimerai que les autres tableaux des feuilles 2 et 3 ( soit des photos3 et 5) soient ordonnés de la même manière. Pour cela j'avais pensé à ordonner par rapport au numéro de la photo4 car c'est le seul critère qui est vraiment fixe pour un joueur de basket.
    De plus je rapelle que pour chacun des matchs chacun des joueurs à une ligne de statistique qui lui est attribué, il faudrait donc que quand j'ordonne le tableau, je garde cette ligne qui caractérise à part entière le joueur.( en gros: j'ordonne les lignes dans le tableau)

    Ainsi au final je me retrouverai avec que des tableaux qui auront la forme du tableau de la photo4.
    J'aimerai aussi que si par exemple je choisi le tableau de la photo4 comme référence et que par exemple il y ai un joueur de différent dans le tableau de la photo5 ( un joueur qui n'est pas présent dans le tableau de la photo4) alors que la ligne de ce joueur aille en dessous de tous les autres joueurs c'est à dire par exemple sur la ligne 13 par exemple .


    voilà ce que j'aimerai faire sous forme de macro, le problème c'est que je ne sais comment le faire j'ai essayé quelque truc mais sans réussite,
    si quelqu'un avait une idée ou même le code associé à ce que j'aimerai faire, ce serait très aimable de sa part.
    Cordialement.
    Images attachées Images attachées    

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Par défaut
    personne a des idées ?

    Pour ma part j'ai essayé ce bout de code que je écris moi même



    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Sub ordonné()
    ' On met le feuille Resultat_General en premier pour faciliter la manipulation
    Sheets("Resultat_General").Select
    Sheets("Resultat_General").Move Before:=Sheets(1)
     
    Dim a As Integer
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
    Dim compteur As Integer
     
    'On parcourt toutes les feuilles pour savoir le nombre qu'on en a (excepté la feuille de Resultat_General)
    For Each Sheet In Worksheets
    If Sheet.Name = "Resultat_General" Then
    compteur = compteur
    Else
    compteur = compteur + 1
    End If
    Next Sheet
     
    'On parcourt de la feuille 2 juqu'à la dernière feuille
    For i = 2 To compteur
    'For Each sheet In Worksheets
     
    'Une fois la feuille de reference fixé avec la boucle sur i on parcourt de la feuille 3 jusqu'à la derniere feuille
    For j = 3 To compteur
    'On regarde pour chaque numero contenu dans les cellules de la colonne A ( cellules allant de A3 à A12)
    For k = 3 To 12
    ' Une fois la cellule de référence fixé on fait varier de la même manière les cellules des autres feuilles
    For l = 3 To 12
     
    'On sélectionne la feuille i, c'est à dire ici notre feuille de référence
    Sheets(i).Select
     
     'Si on a la même valeur (ici le même numero) sur deux même cellule A de deux feuilles différente, alors on les mets sur la même ligne que dans la feuille de référence
     If Sheets(i).Range("A" & k).Value = Sheets(j).Range("A" & l).Value Then
     If k = l Then
     Exit For
     Else
     Sheets(j).Select
     Rows(l).Cut
     Rows(k).Insert Shift:=xlDown
     Exit For
     End If
     
     'si on arrive à la fin de la boucle sur l, c'est à dire que l'on à trouvé aucun correspondant sur la feuille j de la feuille i alors on prends la ligne associé sur la feuille j et on la met à la fin du tableau, et pour finir un crée une ligne vierge à ce niveau (niveau correspondant à celui de la feuille i)
     ElseIf l = 12 Then
     'on incemente une variable a pour savoir ou inserer la ligne que l'on va deplacer par la suite
     a = a + 1
     Sheets(j).Select
     Rows(k).Cut
     Rows(12 + a).Insert Shift:=xlDown
     'on laisse une ligne blanche
     Range("A" & k).Select
     Selection.EntireRow.Insert
     
     Else
     
     
     End If
     
     Next l
     Next k
     Next j
     Next i
     
     
    End Sub

    le problème c'est que si je rentre dans le ElseIF l =12 mon code s'arrête après et je ne comprends pas pourquoi

Discussions similaires

  1. ordonner un tableau associatif selon une colonne
    Par hoolako dans le forum PL/SQL
    Réponses: 4
    Dernier message: 10/03/2010, 18h43
  2. Ordonner un tableau (ok sous FF, rien sous ie)
    Par nauax dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/06/2009, 14h09
  3. Ordonner un tableau à 2 dimensions
    Par gilal dans le forum PL/SQL
    Réponses: 3
    Dernier message: 10/11/2008, 17h06
  4. [MySQL] ordonner un tableau
    Par The Free Man dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/08/2008, 15h09
  5. Réponses: 4
    Dernier message: 11/02/2008, 14h32

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