Bonsoir tout le monde
J'ai déjà posé cette question (avec le même sujet) et j'ai eu une
réponse de Trirème mais qui ne convenait pas.
Mon message d'origine :
> Sur Xl 2003 en VBA uniquement
>
> Je galère un peu pour récupérer le contenu d'une variable qui change plusieurs fois. Je m'explique :
> la variable "a" passe dans une boucle pour me donner la valeur de x éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire la somme du nombre d'éléments différents.
> ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS...
> Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
>
> Pour attaquer mon problème, j'avais pensé à un tableau dynamique : myArray() qui se compléterais à chaque passage de "a" dans la boucle avec
> ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque passage de boucle
> "a" est donc de type String, "n" de type Byte
>
> mais ça ne donne rien!!!
>
> merci de m'aiguiller sur une piste
>
> Robert
Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club
Sub nbreJoueursParAS()
Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte
Dim monClub As String, myArray()
n = 1
For Each myCtrl In UFrmTableauBad16.Controls
If myCtrl.tag = "Classnt" Then 'va tourner 16 fois
joueur = myCtrl.Value
nbr = Len(joueur) 'le nombre de caractères de chaque
joueur
Select Case nbr
Case 2
monClub = Left(joueur, 1)
MsgBox monClub
Case 3
If IsNumeric(Right(joueur, 2)) Then
monClub = Left(joueur, 1)
MsgBox monClub
ElseIf IsNumeric(Right(joueur, 1)) Then
monClub = Left(joueur, 2)
MsgBox monClub
End If
Case 4
monClub = Left(joueur, 2)
MsgBox monClub
End Select
'jusque là tout fonctionne, mais comment récupérer chaque valeur de monClub?
'J'ai penser à un tableau qui se nourrit de la boucle, mais...???
myArray = Array(monClub)
ReDim Preserve myArray(1 To n)
n = 1 + 1
End If
Next myCtrl
End Sub
Merci de votre réponse
Robert
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
Lolote
Salut Robert,
Test effectué avec des valeurs en colonnes A (PL, CB, R, FS, PL, CB, FS...). Je sais, ce n'est peut être pas tout a fait ce que tu recherches mais tu pourrais t'en inspirer.
Sub Test() Dim xTab(1, 11) xPlace = 0 For Each xCellule In Range("A1:A12") For F = 0 To 6 If xTab(0, F) = xCellule Then xTab(1, F) = xTab(1, F) + 1 GoTo Suite End If Next F xTab(0, xPlace) = xCellule xTab(1, xPlace) = 1 xPlace = xPlace + 1 Suite: Next End Sub
@+ Lolote
"Robert" a écrit dans le message de news:
Bonsoir tout le monde J'ai déjà posé cette question (avec le même sujet) et j'ai eu une réponse de Trirème mais qui ne convenait pas.
Mon message d'origine :
Sur Xl 2003 en VBA uniquement
Je galère un peu pour récupérer le contenu d'une variable qui change plusieurs fois. Je m'explique : la variable "a" passe dans une boucle pour me donner la valeur de x éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire la somme du nombre d'éléments différents. ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS... Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
Pour attaquer mon problème, j'avais pensé à un tableau dynamique : myArray() qui se compléterais à chaque passage de "a" dans la boucle avec ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque passage de boucle "a" est donc de type String, "n" de type Byte
mais ça ne donne rien!!!
merci de m'aiguiller sur une piste
Robert
Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club Sub nbreJoueursParAS() Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte Dim monClub As String, myArray() n = 1 For Each myCtrl In UFrmTableauBad16.Controls If myCtrl.tag = "Classnt" Then 'va tourner 16 fois joueur = myCtrl.Value nbr = Len(joueur) 'le nombre de caractères de chaque joueur Select Case nbr Case 2 monClub = Left(joueur, 1) MsgBox monClub Case 3 If IsNumeric(Right(joueur, 2)) Then monClub = Left(joueur, 1) MsgBox monClub ElseIf IsNumeric(Right(joueur, 1)) Then monClub = Left(joueur, 2) MsgBox monClub End If Case 4 monClub = Left(joueur, 2) MsgBox monClub End Select 'jusque là tout fonctionne, mais comment récupérer chaque valeur de monClub? 'J'ai penser à un tableau qui se nourrit de la boucle, mais...??? myArray = Array(monClub) ReDim Preserve myArray(1 To n) n = 1 + 1 End If Next myCtrl End Sub Merci de votre réponse Robert
Salut Robert,
Test effectué avec des valeurs en colonnes A (PL, CB, R, FS, PL, CB, FS...).
Je sais, ce n'est peut être pas tout a fait ce que tu recherches mais tu
pourrais t'en inspirer.
Sub Test()
Dim xTab(1, 11)
xPlace = 0
For Each xCellule In Range("A1:A12")
For F = 0 To 6
If xTab(0, F) = xCellule Then
xTab(1, F) = xTab(1, F) + 1
GoTo Suite
End If
Next F
xTab(0, xPlace) = xCellule
xTab(1, xPlace) = 1
xPlace = xPlace + 1
Suite:
Next
End Sub
@+ Lolote
"Robert" <nospamrg31@free.fr> a écrit dans le message de news:
OpcKyAhiGHA.4580@TK2MSFTNGP05.phx.gbl...
Bonsoir tout le monde
J'ai déjà posé cette question (avec le même sujet) et j'ai eu une réponse
de Trirème mais qui ne convenait pas.
Mon message d'origine :
Sur Xl 2003 en VBA uniquement
Je galère un peu pour récupérer le contenu d'une variable qui change
plusieurs fois. Je m'explique :
la variable "a" passe dans une boucle pour me donner la valeur de x
éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire
la somme du nombre d'éléments différents.
ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS...
Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
Pour attaquer mon problème, j'avais pensé à un tableau dynamique :
myArray() qui se compléterais à chaque passage de "a" dans la boucle avec
ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque
passage de boucle
"a" est donc de type String, "n" de type Byte
mais ça ne donne rien!!!
merci de m'aiguiller sur une piste
Robert
Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club
Sub nbreJoueursParAS()
Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte
Dim monClub As String, myArray()
n = 1
For Each myCtrl In UFrmTableauBad16.Controls
If myCtrl.tag = "Classnt" Then 'va tourner 16 fois
joueur = myCtrl.Value
nbr = Len(joueur) 'le nombre de caractères de chaque
joueur
Select Case nbr
Case 2
monClub = Left(joueur, 1)
MsgBox monClub
Case 3
If IsNumeric(Right(joueur, 2)) Then
monClub = Left(joueur, 1)
MsgBox monClub
ElseIf IsNumeric(Right(joueur, 1)) Then
monClub = Left(joueur, 2)
MsgBox monClub
End If
Case 4
monClub = Left(joueur, 2)
MsgBox monClub
End Select
'jusque là tout fonctionne, mais comment récupérer chaque valeur de
monClub?
'J'ai penser à un tableau qui se nourrit de la boucle, mais...???
myArray = Array(monClub)
ReDim Preserve myArray(1 To n)
n = 1 + 1
End If
Next myCtrl
End Sub
Merci de votre réponse
Robert
Test effectué avec des valeurs en colonnes A (PL, CB, R, FS, PL, CB, FS...). Je sais, ce n'est peut être pas tout a fait ce que tu recherches mais tu pourrais t'en inspirer.
Sub Test() Dim xTab(1, 11) xPlace = 0 For Each xCellule In Range("A1:A12") For F = 0 To 6 If xTab(0, F) = xCellule Then xTab(1, F) = xTab(1, F) + 1 GoTo Suite End If Next F xTab(0, xPlace) = xCellule xTab(1, xPlace) = 1 xPlace = xPlace + 1 Suite: Next End Sub
@+ Lolote
"Robert" a écrit dans le message de news:
Bonsoir tout le monde J'ai déjà posé cette question (avec le même sujet) et j'ai eu une réponse de Trirème mais qui ne convenait pas.
Mon message d'origine :
Sur Xl 2003 en VBA uniquement
Je galère un peu pour récupérer le contenu d'une variable qui change plusieurs fois. Je m'explique : la variable "a" passe dans une boucle pour me donner la valeur de x éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire la somme du nombre d'éléments différents. ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS... Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
Pour attaquer mon problème, j'avais pensé à un tableau dynamique : myArray() qui se compléterais à chaque passage de "a" dans la boucle avec ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque passage de boucle "a" est donc de type String, "n" de type Byte
mais ça ne donne rien!!!
merci de m'aiguiller sur une piste
Robert
Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club Sub nbreJoueursParAS() Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte Dim monClub As String, myArray() n = 1 For Each myCtrl In UFrmTableauBad16.Controls If myCtrl.tag = "Classnt" Then 'va tourner 16 fois joueur = myCtrl.Value nbr = Len(joueur) 'le nombre de caractères de chaque joueur Select Case nbr Case 2 monClub = Left(joueur, 1) MsgBox monClub Case 3 If IsNumeric(Right(joueur, 2)) Then monClub = Left(joueur, 1) MsgBox monClub ElseIf IsNumeric(Right(joueur, 1)) Then monClub = Left(joueur, 2) MsgBox monClub End If Case 4 monClub = Left(joueur, 2) MsgBox monClub End Select 'jusque là tout fonctionne, mais comment récupérer chaque valeur de monClub? 'J'ai penser à un tableau qui se nourrit de la boucle, mais...??? myArray = Array(monClub) ReDim Preserve myArray(1 To n) n = 1 + 1 End If Next myCtrl End Sub Merci de votre réponse Robert
Robert
De toutes façons Merci Je teste ce que je peux en faire Robert
Salut Robert,
Test effectué avec des valeurs en colonnes A (PL, CB, R, FS, PL, CB, FS...). Je sais, ce n'est peut être pas tout a fait ce que tu recherches mais tu pourrais t'en inspirer.
Sub Test() Dim xTab(1, 11) xPlace = 0 For Each xCellule In Range("A1:A12") For F = 0 To 6 If xTab(0, F) = xCellule Then xTab(1, F) = xTab(1, F) + 1 GoTo Suite End If Next F xTab(0, xPlace) = xCellule xTab(1, xPlace) = 1 xPlace = xPlace + 1 Suite: Next End Sub
@+ Lolote
"Robert" a écrit dans le message de news:
Bonsoir tout le monde J'ai déjà posé cette question (avec le même sujet) et j'ai eu une réponse de Trirème mais qui ne convenait pas.
Mon message d'origine :
Sur Xl 2003 en VBA uniquement
Je galère un peu pour récupérer le contenu d'une variable qui change plusieurs fois. Je m'explique : la variable "a" passe dans une boucle pour me donner la valeur de x éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire la somme du nombre d'éléments différents. ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS... Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
Pour attaquer mon problème, j'avais pensé à un tableau dynamique : myArray() qui se compléterais à chaque passage de "a" dans la boucle avec ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque passage de boucle "a" est donc de type String, "n" de type Byte
mais ça ne donne rien!!!
merci de m'aiguiller sur une piste
Robert Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club Sub nbreJoueursParAS() Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte Dim monClub As String, myArray() n = 1 For Each myCtrl In UFrmTableauBad16.Controls If myCtrl.tag = "Classnt" Then 'va tourner 16 fois joueur = myCtrl.Value nbr = Len(joueur) 'le nombre de caractères de chaque joueur Select Case nbr Case 2 monClub = Left(joueur, 1) MsgBox monClub Case 3 If IsNumeric(Right(joueur, 2)) Then monClub = Left(joueur, 1) MsgBox monClub ElseIf IsNumeric(Right(joueur, 1)) Then monClub = Left(joueur, 2) MsgBox monClub End If Case 4 monClub = Left(joueur, 2) MsgBox monClub End Select 'jusque là tout fonctionne, mais comment récupérer chaque valeur de monClub? 'J'ai penser à un tableau qui se nourrit de la boucle, mais...??? myArray = Array(monClub) ReDim Preserve myArray(1 To n) n = 1 + 1 End If Next myCtrl End Sub Merci de votre réponse Robert
De toutes façons Merci
Je teste ce que je peux en faire
Robert
Salut Robert,
Test effectué avec des valeurs en colonnes A (PL, CB, R, FS, PL, CB, FS...).
Je sais, ce n'est peut être pas tout a fait ce que tu recherches mais tu
pourrais t'en inspirer.
Sub Test()
Dim xTab(1, 11)
xPlace = 0
For Each xCellule In Range("A1:A12")
For F = 0 To 6
If xTab(0, F) = xCellule Then
xTab(1, F) = xTab(1, F) + 1
GoTo Suite
End If
Next F
xTab(0, xPlace) = xCellule
xTab(1, xPlace) = 1
xPlace = xPlace + 1
Suite:
Next
End Sub
@+ Lolote
"Robert" <nospamrg31@free.fr> a écrit dans le message de news:
OpcKyAhiGHA.4580@TK2MSFTNGP05.phx.gbl...
Bonsoir tout le monde
J'ai déjà posé cette question (avec le même sujet) et j'ai eu une réponse
de Trirème mais qui ne convenait pas.
Mon message d'origine :
Sur Xl 2003 en VBA uniquement
Je galère un peu pour récupérer le contenu d'une variable qui change
plusieurs fois. Je m'explique :
la variable "a" passe dans une boucle pour me donner la valeur de x
éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire
la somme du nombre d'éléments différents.
ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS...
Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
Pour attaquer mon problème, j'avais pensé à un tableau dynamique :
myArray() qui se compléterais à chaque passage de "a" dans la boucle avec
ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque
passage de boucle
"a" est donc de type String, "n" de type Byte
mais ça ne donne rien!!!
merci de m'aiguiller sur une piste
Robert
Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club
Sub nbreJoueursParAS()
Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte
Dim monClub As String, myArray()
n = 1
For Each myCtrl In UFrmTableauBad16.Controls
If myCtrl.tag = "Classnt" Then 'va tourner 16 fois
joueur = myCtrl.Value
nbr = Len(joueur) 'le nombre de caractères de chaque
joueur
Select Case nbr
Case 2
monClub = Left(joueur, 1)
MsgBox monClub
Case 3
If IsNumeric(Right(joueur, 2)) Then
monClub = Left(joueur, 1)
MsgBox monClub
ElseIf IsNumeric(Right(joueur, 1)) Then
monClub = Left(joueur, 2)
MsgBox monClub
End If
Case 4
monClub = Left(joueur, 2)
MsgBox monClub
End Select
'jusque là tout fonctionne, mais comment récupérer chaque valeur de
monClub?
'J'ai penser à un tableau qui se nourrit de la boucle, mais...???
myArray = Array(monClub)
ReDim Preserve myArray(1 To n)
n = 1 + 1
End If
Next myCtrl
End Sub
Merci de votre réponse
Robert
De toutes façons Merci Je teste ce que je peux en faire Robert
Salut Robert,
Test effectué avec des valeurs en colonnes A (PL, CB, R, FS, PL, CB, FS...). Je sais, ce n'est peut être pas tout a fait ce que tu recherches mais tu pourrais t'en inspirer.
Sub Test() Dim xTab(1, 11) xPlace = 0 For Each xCellule In Range("A1:A12") For F = 0 To 6 If xTab(0, F) = xCellule Then xTab(1, F) = xTab(1, F) + 1 GoTo Suite End If Next F xTab(0, xPlace) = xCellule xTab(1, xPlace) = 1 xPlace = xPlace + 1 Suite: Next End Sub
@+ Lolote
"Robert" a écrit dans le message de news:
Bonsoir tout le monde J'ai déjà posé cette question (avec le même sujet) et j'ai eu une réponse de Trirème mais qui ne convenait pas.
Mon message d'origine :
Sur Xl 2003 en VBA uniquement
Je galère un peu pour récupérer le contenu d'une variable qui change plusieurs fois. Je m'explique : la variable "a" passe dans une boucle pour me donner la valeur de x éléments. Ces éléments peuvent être en doublons ou pas. Je voudrais faire la somme du nombre d'éléments différents. ex: "a" vaut tantôt PL, CB, R, FS, PL, CB, FS... Il me faut faire la somme de PL (donc 2), puis celle de CB (2) etc...
Pour attaquer mon problème, j'avais pensé à un tableau dynamique : myArray() qui se compléterais à chaque passage de "a" dans la boucle avec ReDim Preserve myArray(n) où "n" vaut 1 au début et prend +1 à chaque passage de boucle "a" est donc de type String, "n" de type Byte
mais ça ne donne rien!!!
merci de m'aiguiller sur une piste
Robert Je joins mon code pour plus de clarté
'Fonctionne jusqu'à 99 joueurs et jusqu'à 2 lettres pour le club Sub nbreJoueursParAS() Dim myCtrl As Control, joueur As String, nbr As Byte, n As Byte Dim monClub As String, myArray() n = 1 For Each myCtrl In UFrmTableauBad16.Controls If myCtrl.tag = "Classnt" Then 'va tourner 16 fois joueur = myCtrl.Value nbr = Len(joueur) 'le nombre de caractères de chaque joueur Select Case nbr Case 2 monClub = Left(joueur, 1) MsgBox monClub Case 3 If IsNumeric(Right(joueur, 2)) Then monClub = Left(joueur, 1) MsgBox monClub ElseIf IsNumeric(Right(joueur, 1)) Then monClub = Left(joueur, 2) MsgBox monClub End If Case 4 monClub = Left(joueur, 2) MsgBox monClub End Select 'jusque là tout fonctionne, mais comment récupérer chaque valeur de monClub? 'J'ai penser à un tableau qui se nourrit de la boucle, mais...??? myArray = Array(monClub) ReDim Preserve myArray(1 To n) n = 1 + 1 End If Next myCtrl End Sub Merci de votre réponse Robert