Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Affichage inversé

  • Initiateur de la discussion Initiateur de la discussion MARGAR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

MARGAR

Guest
Bonjour le forum,

J'ai un petit souci avec mon fichier.
J'aimerai que mon affichage reste logique mais après plusieurs essais, je n'y parviens toujours pas.

Je vous joins 2 copies d'écrans et le code qui pause problème.

Merci d'avance

Cordialement

Margar

Voici le code :
Code:
For I = 1 To rencontre Step 1
        For J = 1 To NbJ Step 1
            If bigtablo(J, L + 16) = I Then
                If Sheets("P" & L).Cells(3 + I, 1).Value = "" Then
                    Sheets("P" & L).Cells(3 + I, 1).Value = bigtablo(J, 1)
                    numequipe = bigtablo(J, L + 1)
                Else
                    If bigtablo(J, L + 1) = numequipe Then
                        If Sheets("P" & L).Cells(3 + I, 2).Value = "" Then
                            Sheets("P" & L).Cells(3 + I, 2).Value = bigtablo(J, 1)
                        Else
                            If Sheets("P" & L).Cells(3 + I, 3).Value = "" Then
                                Sheets("P" & L).Cells(3 + I, 3).Value = bigtablo(J, 1)
                            End If
                        End If
                    Else
                        If Sheets("P" & L).Cells(3 + I, 4).Value = "" Then
                            Sheets("P" & L).Cells(3 + I, 4).Value = bigtablo(J, 1)
                        Else
                            If Sheets("P" & L).Cells(3 + I, 5).Value = "" Then
                                Sheets("P" & L).Cells(3 + I, 5).Value = bigtablo(J, 1)
                            Else
                                Sheets("P" & L).Cells(3 + I, 6).Value = bigtablo(J, 1)
                            End If
                        End If
                    End If
                End If
            End If
            
        Next J
    Next I
 

Pièces jointes

  • Affichage OK.PNG
    26.1 KB · Affichages: 125
  • Affichage pas OK.PNG
    25.4 KB · Affichages: 122
Re : Affichage inversé

même question que Dormeur
ton programme est bien fait
pour mettre bigtablo dans saisie
à mettre avant la ligne For L = 1 To NbManche (pas besoin de répéter l'action)
les step 1 ne sont pas utiles
Code:
With Sheets("Saisie")
For L = 1 To UBound(bigtablo, 1)
For c = 2 To UBound(bigtablo, 2)
.Cells(L + 2, c + 2).Value = bigtablo(L, c)
Next c
Next L
End With
 
Re : Affichage inversé

@ Dormeur,

Parce que lorsque je clique sur Manche 1,2,3,4,5, l'affichage n'est pas correct, logiquement,cela devrait être,
d'abord les Triplettes et ensuite les Doublettes.
Voir Miniatures dans 1er message

@Bebere,

Lorsque j'applique ton code, il y a une erreur de compil, variable non définie : c

Cordialement

Margar
 
Re : Affichage inversé

je l'ai déclaré et je n'ai plus l'erreur de compil, mais le problème d'affichage est tjs présent.

En fait, cela se passe lorsqu'il y a un Nombre Impair de Triplettes et Doublettes.

Par ex : pour 25 Joueurs inscrits, il y a 5 Triplettes et 5 Doublettes, donc, l'affichage devrait être :

Equipe 1 Equipe 2

Triplette contre Triplette
Triplette Triplette
Triplette Doublette
Doublette Doublette
Doublette Doublette
 
Re : Affichage inversé

MARGAR a bien défini la déclaration obligatoire des variables (Option Explicit).

Chez moi, lorsque je clique sur le bouton "Manche 1" (2,3,4 et 5) de la feuille d'accueil (Menu) j'ai bien les triplettes en tête et les doublettes à la suite dans mes tableaux.

Juste noté un truc assez vicieux en VBA : n'utilise pas directement les foncions Right() et Left(). Fais-les précéder de VBA. Ce qui va donner (exemple de ton code) :
Code:
LaDate = WorksheetFunction.Match(Left(VBA.Right(Sheets("Classement").Range("A1"), 21), 16), ActiveSheet.Range("O1:AG1"), 0)

Autre remarque : tu utilises Goto à deux reprises dans ton code pour gérer des événements : ce n'est pas pire que Resume Next, mais c'est franchement à proscrire. A n'utiliser, à mon avis, que dans la gestion des erreurs (On Error Goto GESTERREUR par exemple). Avec au moins un Err.Number et un Err.Description après l'étiquette.
 
Re : Affichage inversé

Margar si tu parles de l'affichage UserFormManche
essaye ce code
Code:
Private Sub UserForm_initialize()
    Dim J As Long, Rng As Range, Rng1 As Range
    Dim I As Integer, x As Integer, x1 As Integer
    Dim Indice As Integer

    UserFormManche.Label2.Caption = nomanche & " Manche"
    UserFormManche.LabelDateTournoi.Caption = Right(Sheets("Classement").Range("A1").Value, 22)
    With Sheets("P" & numanche)

        ' Inscription des noms
        ' Le premier label nom est le 10
        Indice = 10
        For J = 4 To 12
        Set Rng = .Range("A" & J & ":C" & J): Set Rng1 = .Range("D" & J & ":F" & J)
        x = Application.CountA(Rng): x1 = Application.CountA(Rng1)
        If x = x1 Then
            For I = 1 To 6
                Me("Label" & Indice).Caption = .Cells(J, I).Value
                Indice = Indice + 1
            Next I
        ElseIf x1 > x Then
             For I = 4 To 6
                Me("Label" & Indice).Caption = .Cells(J, I).Value
                Indice = Indice + 1
            Next I
                      For I = 1 To 3
                Me("Label" & Indice).Caption = .Cells(J, I).Value
                Indice = Indice + 1
            Next I
  
        End If
            Me("Label" & 96 + J) = .Range("I" & J)
            Me("TextBoxResult" & J - 3) = .Range("G" & J)
            Me("TextBoxResult" & J + 6) = .Range("H" & J)
        Next J

        ' Inscription des scores
        ' Inscription des terrains
        ' Le premier label terrain est le 100
        '    Indice = 100
        '    For J = 8 To 10
        '     Me("Label" & Indice) = .Range("I" & J)
        '      Indice = Indice + 1
        '      ' Pour les points équipe 1 les Textbox vont de 1 à 9
        '      UserFormManche.Controls("TextBoxResult" & J - 3) = .Range("G" & J)
        '      ' Pour les points équipe 2 les Textbox vont de 10 à 18
        '      UserFormManche.Controls("TextBoxResult" & J + 6) = .Range("H" & J)
        '
        '    Next J

    End With
End Sub
si tu as un problème avec une fonction vba,il faut aller voir dans outils,références
si MANQUANT: est présent il faut décocher la case
 
Re : Affichage inversé

Je crois que tu as vu juste Bebere. A 25 joueurs, on avait 2 triplettes contre 2 triplettes à gauche (Equipe 1) au lieu de 3 triplettes contre trois triplettes. Avec ta modif, on a plus de triplettes contre triplettes à gauche. Fallait comprendre !🙄

#MARGAR
Je confirme que j'ai une erreur dans les traitement des chaînes Right () et Left(). Contrairement à VB 6.0, il est prudent d'écrire VBA.Right(), VBA.Left() et VBA.Mid().
 
Re : Affichage inversé

Bonjour Bebere, Dormeur, le forum

J'ai bien appliqué ton dernier code et il y a tjs des problèmes d'affichage dans les manches 2 et 5.
Ci-jointes les copies d'écran.

Amicalement

Margar
 

Pièces jointes

  • AFFICHAGE 1ERE MANCHE OK.jpg
    66.5 KB · Affichages: 87
  • AFFICHAGE 2EME MANCHE PAS OK.jpg
    62.2 KB · Affichages: 84
  • AFFICHAGE 4EME MANCHE OK.jpg
    65.9 KB · Affichages: 87
  • AFFICHAGE 5EME MANCHE PAS OK.jpg
    66.1 KB · Affichages: 92
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
174
Réponses
15
Affichages
782
Réponses
8
Affichages
390
Réponses
5
Affichages
909
Réponses
4
Affichages
732
Réponses
8
Affichages
780
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…