Modifier un ensemble de cellules en cliquant un bouton

Fermé
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - Modifié le 18 août 2022 à 19:07
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 19 août 2022 à 14:30

Bonjour à tous,

avant de commencer, pour que vous sachiez où j'en suis, c'est la première fois que j'essaye de pousser un peu plus loin mon utilisation d'Excel en ayant recours aux VBA, macros et boutons. Certes, j'ai autrefois eu l'occasion de programmer en PHP et Actionscript alors j'ai des notions en programmation mais ça s'arrête là, je n'ai jamais appliqué ça dans le contexte d'Excel. Mais afin de concrétiser un projet qui a une certaine importance pour moi, je me vois obligé de me lancer.

Bref, voilà, mon but final est d'avoir une feuille principale (nommée "tableau-analyse") contenant un unique tableau. Celui-ci possédera une mise en forme graphique et des formules d'appel de valeurs allant chercher des données brutes dans des feuilles attenantes (nommées "xx-data" où "xx" est le numéro de la feuille). Il possèdera aussi des formules de conversion de valeurs (mais elles n'ont pas d'intérêt ici, à priori).

Dans cette feuille "tableau-analyse", je cherche donc à créer des boutons qui vont modifier le contenu du tableau afin de faire appel au contenu d'autres feuilles pour remplir celui-ci et visualiser un résultat.

Donc, pour prendre un exemple, si le chemin d'accès aux données d'une cellule est :

='01-data'!A2

J'aimerais que mon bouton modifie le nom '01-data' pour qu'il devienne '02-data', par exemple.

Sauf que j'aimerais appliquer ça à un ensemble de cellules. Par exemple, si j'ai cette suite de cellues/formules :

='01-data'!A2
='01-data'!B2
='01-data'!C2
='01-data'!A3
='01-data'!B3
='01-data'!C3

J'aimerais qu'elles deviennent ceci lorsque je clique sur un bouton :

='02-data'!A2
='02-data'!B2
='02-data'!C2
='02-data'!A3
='02-data'!B3
='02-data'!C3

Peut-être y a-t-il moyen de faire plus simple que de la manière dont je l'envisage (vous me le direz) mais voici comment j'ai démarré mon exercice : via une macro et dans un bouton, j'ai pu établir le code suivant :

Public nameOfSheet As String
_______________________________________________________________________________
Private Sub MoyenAge_Click()
    Range("A2").Select
    Cells.Replace What:="01-data", Replacement:="01-data", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

La variable nameOfSheet, c'est moi qui l'ai implémentée.

Ce code est issu de la macro que j'ai lancée et enregistrée en effectuant un "rechercher et remplacer" (CTRL+F) à partir duquel j'ai remplacé tous mes noms de feuilles afin de simuler un remplacement de valeur par une autre. Je me disais que sur base de ce code, je pourrais peut-être modifier le contenu de la variable nameOfSheet en le remplaçant par le texte "01-data" (ou tout autre texte/nom de feuille lié au bouton enfoncé).

J'espère que cette dernière explication est claire ? En somme, peu importe, je me disais simplement qu'il faudrait pouvoir insérer ma variable en lieu et place de chaque chemin de feuille et modifier le contenu de cette variable lorsque je clique sur un bouton. Mais je sèche pour ce qui concerne le fait d'implémenter ma variable dans les cellules de mon tableau et aussi pour obtenir la syntaxe ad-hoc dans le script de mon bouton.

Est-ce que vous pouvez m'aider ? Merci !

A voir également:

4 réponses

via55 Messages postés 14512 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 janvier 2025 2 740
19 août 2022 à 01:23

Bonsoir

Pourquoi passer par une macro alors que tu peux obtenir le même résultat avec une liste déroulante et la fonction INDIRECT

exemple  : https://www.cjoint.com/c/LHsxwKFsNnu

Cdlmnt

Via


1
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
18 août 2022 à 19:12

Bonjour,

Et pourquoi pas tout simplement faire un Rechercher et remplacer et l'appliquer aux cellules contenant une formule comme expliqué ici :

https://support.microsoft.com/fr-fr/office/rechercher-ou-remplacer-du-texte-et-des-nombres-dans-une-feuille-de-calcul-0e304ca5-ecef-4808-b90f-fdb42f892e90


0
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
Modifié le 19 août 2022 à 11:24

Hello, merci pour votre retour !

@ozone_, concernant le rechercher/remplacer, c'est vrai que je pourrais procéder avec ça mais je trouve ça un peu fastidieux à utiliser en pratique. Par exemple, si je veux pouvoir comparer rapidement mes donnée en un coup d'oeil, ce n'est pas possible parce qu'il y a trop de manipulations à effectuer. Donc pourquoi pas mais pas très pratique.

@via55, merci, je ne connaissais pas cette technique. C'est super et c'est exactement ce qu'il me faudrait. Je vais étudier la question, merci beaucoup d'avoir pris la peine de créer ce fichier pour moi ! ;-)


0
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
19 août 2022 à 14:30

Ca marche ! Merci pour tout ! :-)


0