Créer une macro complexe
Bonsoir,
Je suis nouveau sur le site et j’adore utiliser excel à mes heures perdue. Je souhaiterai m’amélioré en apprenant les macros et la programmation.
Voici le problème à résoudre :
J’ai créé une feuille de calcul pour un tournoi de classement, sur 128 joueurs, pour le tennis de table.
Si j’ai 128 joueurs inscrits, le classement se fera sur 128 joueurs, donc pas de problème.
Mais par exemple, si j’ai que 32 joueurs inscrits, mon classement se fera sur 128 et non sur 32 joueurs ! (Ca me ferai bizarre d’annoncer que le moins bien classé se retrouve à la 128èmes place alors qu’ils sont 32 inscrits !
- $E$264 --> $E$72 = 128 modifications effectuées
- $I$264 --> $I$72 = 384 modifications effectuées
- $K$264 --> $K$72 = 128 modifications effectuées
- $P$264 --> $P$72 = 128 modifications effectuées
- $R$264 --> $R$72 = 128 modifications effectuées
- $T$264 --> $T$72 = 128 modifications effectuées
- $Y$264 --> $Y$72 = 128 modifications effectuées
Après modifications, j’obtiens mon classement de 1 à 32 participants.
Ma question est la suivante ; pourrai-je faire une boîte de dialogue, qui me demanderai « Quelle est le nombre de participants ? », et qui modifierai automatiquement les cellules en question après avoir donné ma réponse ?
Je n’ai aucune connaissance en programmation et encore moins en macro ! Pourriez-vous m’aider…svp ?
Bonsoir,
Si tu joues à comment utiliser Excel pour se compliquer un max. l'existence ! tu vas sûrement gagner !!
Si la fusion de cellules peut permettre de rendre une présentation plus agréables à l'oeil, elle n'a pas été conçue pour en faire un usage principal d'Excel et demeure antinomique avec la gestion de données et les calculs...
En fusionnant 32 cellules, sur ce groupe il restera une cellule vivante, et 31 mortes, donc plus encombrantes qu'utiles.
Bon amusement, si j'ose dire, j'ignore si tu vas trouver beaucoup de candidats pour se pencher sur ton fichier, mais n'étant pas atteint par une crise de masochisme aiguë, je resterai pour ma part à l'écart...
Cordialement.
Bonjour tout le monde,
"Grâce" aux fusions de cellules, $T$136 n'existe pas, ne peut rien contenir ...
in fine, si on ne se pose pas de questions philosophiques, la réalisation peut être simple en créant une macro VBA qui ferait le remplacement des valeurs, mais je n'ai pas compris ce qu'il fallait remplacer ! et par quoi ?
J'ai une suggestion à te faire :
Fais macro > enregistrer une macro
Exécute ensuite ce que tu dis :
et renvoie la macro enregistrée, on pourra l'adapter en mettant une boite de dialogue pour demander le nombre de joueurs et le mettre en paramètre.Pour y remédier, je dois changer la valeur d’une formule qui se trouve dans plusieurs cellules (e, i, k, p, r, t et y). Pour cela, je prends le n° de la ligne, par exemple 264 qui correspond à 128 joueurs inscrits, et la modifie en 72 pour 32 joueurs inscrits. J’utilise la commande remplacé pour les modifications
Hello Unmard
Toujours à ta disposition après enregistrement de ta macro. On en fera un paramétrage !
Hello,
Désolé pour le retard !
Merci à ceux qui ce sont posé sur mon problème
Pour ce qui est de la macros, je vous l'enverrai dès que possible
Merci et bonne soirée à tous
Hello Unmard
Toujours à ta disposition après enregistrement de ta macro. On en fera un paramétrage !
Hello Steelson,
Voici le fichier demandé.
Le fichier peut contenir jusqu’à 128 joueurs.
J’ai créé la macro sur 128 joueurs et j’ai inséré 26 joueurs, avec leurs points.
Vous constaterez que les meilleurs sont en haut et les moins bons tout en bas, dans la colonne « Classement final » toute à droite. Si vous exécutez la macro « classement_des_joueurs », les joueurs seront classés du 1er au 26e !
Le 128e joueurs correspondrai à la 264e lignes dans excel
Le 26e joueurs correspondrai à la 60e lignes dans excel
Je souhaiterai avoir une macro avec un message, qui me demandera le nombre de joueurs.
Le problème…chaque joueurs seront réparties sur une ligne pair ! (à cause des cellules fusionnées)
1er joueur, 10e lignes
2e joueurs, 12e lignes
3e joueurs, 14e lignes
Etc….
Merci d’avance pour ta réponse.
Unmard
Bonjour Unmard,
Juste une petite remarque au passage, à tout hasard : ta façon d'utiliser les feuilles Excel est très originale (un point pour toi), mais le quadrillage d'une feuille Excel est fait pour délimiter les cellules, ce n'est pas fait pour imiter les feuilles scolaires quadrillées, encore moins avec des petits carreaux d'environ 5 millimètres de côté (sur toute la feuille) !
NB : je ne crois pas que tu aies besoin de déposer un brevet pour ta méthode spéciale : je t'assure que tu ne risques guère les contrefaçons.
Cordialement,
dhany
Si si, ça m'a fait penser à des feuilles scolaires quadrillées, ou mieux : aux feuilles de papier millimétrées dont on se sert pour faire manuellement des graphiques très précis ; mais si toi tu y vois un travail d'artiste, alors tu as sans doute raison !
Un vrai travail d'artiste ! une finesse digne d'un pongiste en effet ...
Une question : il n'y a que ces 4 possibilités ?
$T$264 = 128 joueurs
$T$136 = 64 joueurs
$T$72 = 32 joueurs
$T$40 = 16 joueurs
Bonjour Steelson,
il y a exactement 128 possibilités.
$T$10 = 1 joueur
$T$12 = 2 joueurs
$T$14 = 3 joueurs
Etc...
et faire de même avec toutes les lettres mentionnées dans le fichier (T-R-P-I-Y-K-E).
ok, donc 8 + 2 fois le nbre de joueurs
je regarde cela en fin de matinée
si si, c'est comme une peinture : plus c'est inutile plus c'est beau !Si si, ça m'a fait penser à des feuilles scolaires quadrillées, ou mieux : aux feuilles de papier millimétrées dont on se sert pour faire manuellement des graphiques très précis ; mais si toi tu y vois un travail d'artiste, alors tu as sans doute raison !
Cdlt, dhany
Sub nombres_de_joueurs()
choix:
Do
nbre = Application.InputBox("Rentrez le nombre de joueurs.", Type:=1)
Loop While nbre = ""
If nbre = False Then Exit Sub 'gestion de la touche annul
If Not IsNumeric(nbre) Then
MsgBox "Merci de saisir un nombre", vbExclamation
GoTo choix
End If
If nbre < 1 Or nbre > 128 Then
MsgBox "Merci de saisir un nombre entre 1 et 128", vbExclamation
GoTo choix
End If
nbre = 8 + 2 * nbre
Cells.Replace What:="$T$264", Replacement:="$T$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="$R$264", Replacement:="$R$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="$P$264", Replacement:="$P$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="$I$264", Replacement:="$I$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="$Y$264", Replacement:="$Y$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="$K$264", Replacement:="$K$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="$E$264", Replacement:="$E$" & nbre, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub