Automatiser des rencontres

AlainS33 Messages postés 1 Date d'inscription mardi 4 octobre 2011 Statut Membre Dernière intervention 4 octobre 2011 - 4 oct. 2011 à 21:38
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 5 oct. 2011 à 15:43
Bonjour,
Dans mon job je travaille sous Excel 2003.
Je dois organiser des rencontres entre 2 personnes sans qu'elles se rencontrent une nouvelle fois.
J'ai réussi à élaborer manuellement jusqu'à 12 rencontres, soit 6 poules. Mais au delà je rencontre des difficultés.
Débutant en VBA, je n'arrive pas à écrire le code pour automatiser ces rencontres (problème de boucle).
Pouvez vous m'aider SVP?
Merci,
Cordialement
alain

7 réponses

NHenry Messages postés 15030 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
5 oct. 2011 à 00:00
Bonjour,

Soit un tableau contenant la liste des noms uniques :
Pour chaque élément du tableau (par index)
{
    Pour chaque élément du tableau suivant celui de la boucle précédente
    {
        Ajouter le croisement
    }
}


Essayes de voir de ce coté.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 oct. 2011 à 01:34
Bonsoir,
l' idée de NHENRY est appréciable,
sauf qu' il faut éviter de faire rencontrer
une personne avec elle-même.
Pour cela, il faut décaler la liste de face d' un cran.
Voici un schéma avec une liste de 4 (pour faire plus court)

1 2
2 3
3 4
4 1

1 3
2 4
3 1
4 2

1 4
2 1
3 2
4 3

Après, pour automatiser celà,
on envisagera une boucle allant
de 1 à nombre de personnes -1.
On décalera alors notre liste à chaque passage.





[] Ce qui va sans dire. va mieux en le disant.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 oct. 2011 à 01:42
oui, vous avez raison !
Il y a double rencontre

je reviendrais plus tard avec un raisonnement plus raisonnable .. [] Ce qui va sans dire. va mieux en le disant.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 oct. 2011 à 01:51
For i=1 To nPersonnes-1
For j=i+1 To nPersonnes
Debug.Print i & "-" & j
Next
Next [] Ce qui va sans dire. va mieux en le disant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 oct. 2011 à 03:57
désolé pour ces posts en rafale.

C' est que moi-même je trouve ça pas assez satisfaisant !
Et ça me travaille.

Voici une stratégie que je tacherais de codifier.
Un sacré exercice !

Promis, je ne reviendrai pas avant.

1* Divisons notre liste en deux groupes.
-G1 : 1 2 3 4
-G2 : 5 6 7 8

2* -Mettons les l' une en face de l' autre
1ière journée:
1 5
2 6
3 7
4 8

2ième journée: (on décale la liste de droite)
1 6
2 7
3 8
4 5

3ième journée: (on décale une 2° fois)
1 7
2 8
3 5
4 6

4ième journée: (on décale une 3° fois)
1 8
2 5
3 6
4 7

Reste à faire de même pour les éléments de chaque groupe.
Divisons alors chaque groupe en deux et refaisons la même chose.
G1.1 : 1 2
G1.2 : 3 4

G2.1 : 5 6
G2.2 : 7 8

5ième journée:
1 3
2 4

5 7
6 8

6ième journée:
1 4
2 3

5 8
6 7

Pour la dernière journée, on fait rencontrer
chaqu élément du groupe avec l' autre élément du même groupe

7ième journée:
1 2
3 4
5 6
7 8

A+
[] Ce qui va sans dire. va mieux en le disant.
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
5 oct. 2011 à 14:50
Salut
c'est comme choisir 2 element parmis k element
k!
_____

2!*(k-2)!
si le tableau est indexé de 0 à k
dim member1 as string
dim member2 as string
for i = 0 to k
  for j = (i+1) to k  
   member1 = Listname(i)
   member2 = listname(j)
   'placer member1 et member2 dans une cellule
  next j
next i
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 oct. 2011 à 15:43
Salut ShayW,

for i = 0 to k-1
for j = (i+1) to k

C' est pas une question de combinaisons seulement.
Le problème est plus complexe que ça !

Pour faire simple, éviter d' avoir:
OM - PSG
OM - NANTES
dans la même journée !

OM - PSG
NIMES - NANTES

ça, c' est raisonnable..


[] Ce qui va sans dire. va mieux en le disant.
0