Dans une feuille, j'ai 12 petits tableaux de 4 colonnes et un nombre de li=
gnes variable. Dans le cas pr=E9sent, le nombre de lignes et =E9gal au nomb=
re de joueurs.
J'ai cr=E9=E9 des tableaux dynamiques en utilisant d'une part la variable N=
bJoueurs et des coordonn=E9es et d'autre part, des tableaux (array) pour l=
es coordonn=E9es.
J'ai une erreur dans l'=E9criture << Class(nom) (nom, 0) =3D .Cells(lig(i) =
+ nom, col(c)) >>
Je voudrais obtenir pour Class(nom) =3D PA puis PB, etc...
PA(0,0)=3D .Cells(lig(i) + nom, col(c))=20
PA( etc...
Le code int=E9ressant la question ci-dessous.
Merci pour les conseils.
Cordialement=20
JP
Sub CompleteTabFinales()
Dim NbJoueurs As Byte
Dim lig As variant
Dim col As variant
'd=E9claration dynamique des tableaux de poules
Dim PA(), PB(), PC(), PD(), PE(), PF()
Dim PG(), PH(), PI(), PJ(), PK(), PL()
Dim Class()
Set ShI =3D Sheets("Inscription")
' Nombre d'=E9quipes par poules
NbEq =3D ShI.Range("C30").Value
' Nombre de Joueurs par poules
NbJoueurs =3D NbEq * 2
' Nombre de terrains
NbTer =3D ShI.Range("C6").Value
' coordonn=E9es des colonnes et des lignes o=F9 se trouvent les premiers no=
ms des joueurs
col =3D Array(5, 11, 17, 23)
lig =3D Array(5, 21, 37)
Class =3D Array("PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PI", "PJ",=
"PK", "PL")
'Ecriture dans le tableau Class
For c =3D 0 To 3
For i =3D 0 To 2
If Sheets("accueil et synth=E8se").Cells(lig(i), col(c)) <> "" Then
For nom =3D 0 To NbJoueurs - 1
With Sheets("accueil et synth=E8se")
Class(nom) (nom, 0) =3D .Cells(lig(i) + nom, col(c))
Class(nom) (nom, 1) =3D .Cells(lig(i) + nom, col(c) + 1=
)
Class(nom) (nom, 2) =3D .Cells(lig(i) + nom, col(c) + 2=
)
Class(nom) (nom, 3) =3D .Cells(lig(i) + nom, col(c) + 3=
)
End With
=20
Next nom
Else
Exit For
End If
Next i
Next c
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
Il ne faut jamais dire ce que l'on tente d'effectuer quand on pose une question... c'est la première règle lorsqu'on veut avoir de l'aide! Le demandeur n'a qu'à deviner...
C'est quoi ça, je fais référence à cette section : Class(nom)(nom, 0). Explique comment je devrais lire ton tableau?
Ton tableau (array) class() n'a qu'une dimension.
Bonjour,
Il ne faut jamais dire ce que l'on tente d'effectuer quand on pose une
question...
c'est la première règle lorsqu'on veut avoir de l'aide!
Le demandeur n'a qu'à deviner...
C'est quoi ça, je fais référence à cette section : Class(nom)(nom, 0).
Explique comment je devrais lire ton tableau?
Il ne faut jamais dire ce que l'on tente d'effectuer quand on pose une question... c'est la première règle lorsqu'on veut avoir de l'aide! Le demandeur n'a qu'à deviner...
C'est quoi ça, je fais référence à cette section : Class(nom)(nom, 0). Explique comment je devrais lire ton tableau?
Ton tableau (array) class() n'a qu'une dimension.
JP
Bonjour Denis,
Le tableau class prend les valeurs PA puis PB puis PC jusqu'à PL. Son indice va de 0 à 9 (car 10 joueurs) Chaque joueur gagne ou perd des matches; des sets et des points.
Ce que je veux faire ce sont des tableaux qui reçoivent: un NOM et prénom un nombre pour le nombre de matches gagnés un nombre pour le nombre de sets gagnés un nombre pour le nombre de points gagnés ou perdus
Exemple:
PA(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points PB(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points PC(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points etc...
Je ne sais pas si c'est plus clair.
JPierre
Bonjour Denis,
Le tableau class prend les valeurs PA puis PB puis PC jusqu'à PL.
Son indice va de 0 à 9 (car 10 joueurs)
Chaque joueur gagne ou perd des matches; des sets et des points.
Ce que je veux faire ce sont des tableaux qui reçoivent:
un NOM et prénom
un nombre pour le nombre de matches gagnés
un nombre pour le nombre de sets gagnés
un nombre pour le nombre de points gagnés ou perdus
Exemple:
PA(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points
PB(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points
PC(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points
etc...
Le tableau class prend les valeurs PA puis PB puis PC jusqu'à PL. Son indice va de 0 à 9 (car 10 joueurs) Chaque joueur gagne ou perd des matches; des sets et des points.
Ce que je veux faire ce sont des tableaux qui reçoivent: un NOM et prénom un nombre pour le nombre de matches gagnés un nombre pour le nombre de sets gagnés un nombre pour le nombre de points gagnés ou perdus
Exemple:
PA(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points PB(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points PC(9,2) pour un tableau de 10 noms et 3 colonnes pour matches|sets|points etc...
Je ne sais pas si c'est plus clair.
JPierre
MichD
As-tu déjà essayé quelque chose comme ça :
Tu définis dans le haut d'un module standard : '----------------------------------------- Public Type Joueurs Prénom() As String Nom() As String NbParties() As Long End Type '-----------------------------------------
Maintenant dans une procédure, tu peux utiliser ce type de tableau. Tu utilises le nom de la variable que tu désires As Joueurs
Cette variable se compose de 3 éléments. Dès que tu tapes le point, tu as une liste déroulante des éléments que tu as définis dans le "Type"
'----------------------------------------- Sub test() Dim Mesjoueurs As Joueurs
For A = 1 To 10 Mesjoueurs.Prénom(A) = Range("A" & A) Mesjoueurs.Nom(A) = Range("B" & A) Mesjoueurs.NbParties(A) = Range("C" & A) Next End Sub '-----------------------------------------
As-tu déjà essayé quelque chose comme ça :
Tu définis dans le haut d'un module standard :
'-----------------------------------------
Public Type Joueurs
Prénom() As String
Nom() As String
NbParties() As Long
End Type
'-----------------------------------------
Maintenant dans une procédure, tu peux utiliser ce type de tableau.
Tu utilises le nom de la variable que tu désires As Joueurs
Cette variable se compose de 3 éléments. Dès que tu tapes le point,
tu as une liste déroulante des éléments que tu as définis dans le "Type"
'-----------------------------------------
Sub test()
Dim Mesjoueurs As Joueurs
For A = 1 To 10
Mesjoueurs.Prénom(A) = Range("A" & A)
Mesjoueurs.Nom(A) = Range("B" & A)
Mesjoueurs.NbParties(A) = Range("C" & A)
Next
End Sub
'-----------------------------------------
Tu définis dans le haut d'un module standard : '----------------------------------------- Public Type Joueurs Prénom() As String Nom() As String NbParties() As Long End Type '-----------------------------------------
Maintenant dans une procédure, tu peux utiliser ce type de tableau. Tu utilises le nom de la variable que tu désires As Joueurs
Cette variable se compose de 3 éléments. Dès que tu tapes le point, tu as une liste déroulante des éléments que tu as définis dans le "Type"
'----------------------------------------- Sub test() Dim Mesjoueurs As Joueurs
For A = 1 To 10 Mesjoueurs.Prénom(A) = Range("A" & A) Mesjoueurs.Nom(A) = Range("B" & A) Mesjoueurs.NbParties(A) = Range("C" & A) Next End Sub '-----------------------------------------
MichD
La procédure test() est plutôt celle-ci :
'------------------------------------------ Sub test() Dim Mesjoueurs As Joueurs
For A = 1 To 10 ReDim Preserve Mesjoueurs.Prénom(1 To A) Mesjoueurs.Prénom(A) = Range("A" & A) ReDim Preserve Mesjoueurs.Nom(1 To A) Mesjoueurs.Nom(A) = Range("B" & A) ReDim Preserve Mesjoueurs.NbParties(1 To A) Mesjoueurs.NbParties(A) = Range("C" & A) Next
End Sub '------------------------------------------
Au lieu d'utiliser Redim Preserve, si tu connais déjà le nombre de joueurs tu peux définir le type comme suit :
Public Type Joueurs Prénom(1 to 10) As String Nom(1 to 10) As String NbParties(1 to 10) As Long End Type
La procédure test() est plutôt celle-ci :
'------------------------------------------
Sub test()
Dim Mesjoueurs As Joueurs
For A = 1 To 10
ReDim Preserve Mesjoueurs.Prénom(1 To A)
Mesjoueurs.Prénom(A) = Range("A" & A)
ReDim Preserve Mesjoueurs.Nom(1 To A)
Mesjoueurs.Nom(A) = Range("B" & A)
ReDim Preserve Mesjoueurs.NbParties(1 To A)
Mesjoueurs.NbParties(A) = Range("C" & A)
Next
End Sub
'------------------------------------------
Au lieu d'utiliser Redim Preserve, si tu connais déjà le nombre de joueurs
tu peux définir le type comme suit :
Public Type Joueurs
Prénom(1 to 10) As String
Nom(1 to 10) As String
NbParties(1 to 10) As Long
End Type
'------------------------------------------ Sub test() Dim Mesjoueurs As Joueurs
For A = 1 To 10 ReDim Preserve Mesjoueurs.Prénom(1 To A) Mesjoueurs.Prénom(A) = Range("A" & A) ReDim Preserve Mesjoueurs.Nom(1 To A) Mesjoueurs.Nom(A) = Range("B" & A) ReDim Preserve Mesjoueurs.NbParties(1 To A) Mesjoueurs.NbParties(A) = Range("C" & A) Next
End Sub '------------------------------------------
Au lieu d'utiliser Redim Preserve, si tu connais déjà le nombre de joueurs tu peux définir le type comme suit :
Public Type Joueurs Prénom(1 to 10) As String Nom(1 to 10) As String NbParties(1 to 10) As Long End Type
JP
Je viens d'essayer mais j'ai la même erreur: erreur 13 incompatibilité de type
J'ai ajouté un msgbox avant la ligne qui me donne l'erreur. msgbox donne bien "PA".