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 ! ). 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 :

  • $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 :

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

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.

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….

23final-32j.xlsm (479.85 Ko)

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) ! je ne suis pas étonné que tu aies été obligé de faire d'innombrables fusions, mais vois-tu, je ne suis pas sûr que ce soit la façon la plus pratique ni la plus adéquate de se servir du tableur Excel (même si tu adores l'utiliser à tes heures perdues, et que tu as du temps à perdre à revendre !). Je laisse à Steelson ou à un autre intervenant le soin de t'aider davantage que j'ai pu le faire avec ma modeste remarque (en lui souhaitant bon courage, et aussi bonne chance !).

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

Un vrai travail d'artiste ! une finesse digne d'un pongiste en effet ...

feuilles scolaires quadrillées

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

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

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, ç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

si si, c'est comme une peinture : plus c'est inutile plus c'est beau !
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
Rechercher des sujets similaires à "creer macro complexe"