VBA Tirages de combinaisons de X nombres dans une série de Y nombres
6 réponses
Blaise
Bonjour =C3=A0 toutes et tous,
J'ai en m=C3=A9moire un tableau lSgnVariables de taille variable (max 9)
Je dois lister les combinaisons possibles d'un nombre lui aussi variable.
Par exemple, j'ai 6 nombres 1 2 3 4 5 6. et j'ai besoin d'avoir les combina=
isons de 3 nombres parmi ses 6
1 2 3, 1 2 4, 1 2 5, 1 2 6, 1 3 4, 1 3 5, etc
Mais cela peut =C3=AAtre 7 nombres et des combinaisons de 4
J'imagine de la r=C3=A9cursivit=C3=A9, mais je ne me suis jamais fait =C3=
=A0 cette notion.
Pouvez-vous m'aider ?
Cordialement,
Blaise
Bonjour Michel et à tous, Je suis dans ce code depuis quelques jours en essayant de l'adapter à ma situation, mais il a un grand défaut : il n'est absolument pas docu menté ! Je sèche sur la ligne 43 : vAllItems = Rng.Offset(2, 0).Resize(PopSi ze).Value et donc les suivantes me sont aussi obscures. Qui comprend cela et pourrait expliquer ? Et mieux même, qui serait capable de documenter ce code ? Merci à tous !
Bonjour Michel et à tous,
Je suis dans ce code depuis quelques jours en essayant de l'adapter à ma situation, mais il a un grand défaut : il n'est absolument pas docu menté !
Je sèche sur la ligne 43 : vAllItems = Rng.Offset(2, 0).Resize(PopSi ze).Value
et donc les suivantes me sont aussi obscures.
Qui comprend cela et pourrait expliquer ?
Et mieux même, qui serait capable de documenter ce code ?
Bonjour Michel et à tous, Je suis dans ce code depuis quelques jours en essayant de l'adapter à ma situation, mais il a un grand défaut : il n'est absolument pas docu menté ! Je sèche sur la ligne 43 : vAllItems = Rng.Offset(2, 0).Resize(PopSi ze).Value et donc les suivantes me sont aussi obscures. Qui comprend cela et pourrait expliquer ? Et mieux même, qui serait capable de documenter ce code ? Merci à tous !
Blaise
En sachant que le paradigme a changé : Mes nombres sont dans des cell ules agencées horizontalement. Ça, j'ai su adapter. Tout se passe bien jusqu'à cette ligne.
En sachant que le paradigme a changé : Mes nombres sont dans des cell ules agencées horizontalement.
Ça, j'ai su adapter. Tout se passe bien jusqu'à cette ligne.
En sachant que le paradigme a changé : Mes nombres sont dans des cell ules agencées horizontalement. Ça, j'ai su adapter. Tout se passe bien jusqu'à cette ligne.
Michd
Bonjour, | vAllItems = Rng.Offset(2, 0).Resize(PopSize).Value **** La combinaison des méthodes "Offset" et "Resize" est l'équivalent de la fonction "Decaler" dans la feuille de calcul. Rng = représente une plage de données (ou une cellule) Offset = 2 paramètres : Ligne, Colonne. Dans l'exemple (Rng.Offset(2, 0)), il déplace la première cellule de deux lignes vers le bas et 0 colonne vers la droite. On peut utiliser des valeurs négatives au besoin. Si Rng représente la cellule A1, Rng.Offset(2, 0) représente la cellule A3 soit 2 cellules plus bas. .Resize(PopSize). Redimensionne la plage de cellules. Cette méthode a aussi 2 paramètres, ligne et colonne. La valeur de ces deux paramètres ne peut pas être négative. Dans cet exemple, la plage de cellules ajoutera le nombre de cellules vers le bas de la valeur que représente "PopSize". Dans "PopSize" la première cellule fait partie du décompte. En supposant que PopSize vaut 5 et que Rng représente la cellule A1, la plage de cellule se déplacera d'abord à A3 à cause de "Offset" et elle sera redimensionné de 5 cellules vers le bas. Par conséquent Rng équivaut à la plage A3:A7 Le .Value à la fin de la ligne de code signifie que chaque valeur de chacune de ces cellules seront placées dans une variable vAllItems déclarée comme tableau (array) ou variant. vAllItems est un tableau à 2 dimensions (ligne, colonne) . Ce tableau est nécessaire de Base 1 sous-attendue Option Base 1 car il représente au moins une cellule définit par le numéro d'une ligne et le numéro d'une colonne. MichD
**** La combinaison des méthodes "Offset" et "Resize" est l'équivalent de la
fonction "Decaler" dans la feuille de calcul.
Rng = représente une plage de données (ou une cellule)
Offset = 2 paramètres : Ligne, Colonne. Dans l'exemple
(Rng.Offset(2, 0)), il déplace la première cellule de deux lignes vers le
bas et 0 colonne vers la droite. On peut utiliser des valeurs négatives au
besoin.
Si Rng représente la cellule A1, Rng.Offset(2, 0) représente la cellule A3
soit 2 cellules plus bas.
.Resize(PopSize). Redimensionne la plage de cellules. Cette méthode
a aussi 2 paramètres, ligne et colonne. La valeur de ces deux paramètres ne
peut pas être négative. Dans cet exemple, la plage de cellules ajoutera le
nombre de cellules vers le bas de la valeur que représente "PopSize". Dans
"PopSize" la première cellule fait partie du décompte.
En supposant que PopSize vaut 5 et que Rng représente la cellule A1, la
plage de cellule se déplacera d'abord à A3 à cause de "Offset" et elle sera
redimensionné de 5 cellules vers le bas. Par conséquent Rng équivaut à la
plage A3:A7
Le .Value à la fin de la ligne de code signifie que chaque valeur de chacune
de ces cellules seront placées dans une variable vAllItems déclarée comme
tableau (array) ou variant. vAllItems est un tableau à 2 dimensions
(ligne, colonne) . Ce tableau est nécessaire de Base 1 sous-attendue Option
Base 1 car il représente au moins une cellule définit par le numéro d'une
ligne et le numéro d'une colonne.
Bonjour, | vAllItems = Rng.Offset(2, 0).Resize(PopSize).Value **** La combinaison des méthodes "Offset" et "Resize" est l'équivalent de la fonction "Decaler" dans la feuille de calcul. Rng = représente une plage de données (ou une cellule) Offset = 2 paramètres : Ligne, Colonne. Dans l'exemple (Rng.Offset(2, 0)), il déplace la première cellule de deux lignes vers le bas et 0 colonne vers la droite. On peut utiliser des valeurs négatives au besoin. Si Rng représente la cellule A1, Rng.Offset(2, 0) représente la cellule A3 soit 2 cellules plus bas. .Resize(PopSize). Redimensionne la plage de cellules. Cette méthode a aussi 2 paramètres, ligne et colonne. La valeur de ces deux paramètres ne peut pas être négative. Dans cet exemple, la plage de cellules ajoutera le nombre de cellules vers le bas de la valeur que représente "PopSize". Dans "PopSize" la première cellule fait partie du décompte. En supposant que PopSize vaut 5 et que Rng représente la cellule A1, la plage de cellule se déplacera d'abord à A3 à cause de "Offset" et elle sera redimensionné de 5 cellules vers le bas. Par conséquent Rng équivaut à la plage A3:A7 Le .Value à la fin de la ligne de code signifie que chaque valeur de chacune de ces cellules seront placées dans une variable vAllItems déclarée comme tableau (array) ou variant. vAllItems est un tableau à 2 dimensions (ligne, colonne) . Ce tableau est nécessaire de Base 1 sous-attendue Option Base 1 car il représente au moins une cellule définit par le numéro d'une ligne et le numéro d'une colonne. MichD
Blaise
Un énorme merci ! Quelle clarté ! Je connaissais Offset, mais pas vraiment Resize. Avec tes explications, cela devient lumineux. Un grand merci encore.
Un énorme merci ! Quelle clarté !
Je connaissais Offset, mais pas vraiment Resize.
Avec tes explications, cela devient lumineux.
Un grand merci encore.
Un énorme merci ! Quelle clarté ! Je connaissais Offset, mais pas vraiment Resize. Avec tes explications, cela devient lumineux. Un grand merci encore.