Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Selectionner une plage d'adresses selon le contenu de cellules

mad4max

XLDnaute Nouveau
Bonjour à tous!

J'ai un sondage composé de plusieurs onglets contenant à chaque fois une série de questions et de réponses. Il y a une dizaine d'onglet et dans chacun d'eux, il peut y a voir quelques questions ou beaucoup de questions.

Je cherche un moyen pour pouvoir effacer avec une macro toutes les réponses dans chaque onglet. J'ai pensé à la fonction:

Sheets("Seafood - Shrimps").Select
Range("H13:V25").Select
Selection.ClearContents

Mais vu que dans l'onglet "Seafood - Shrimps", il peut y avoir plusieurs plages à effacer, il me faut trouver un moyen pas trop complèxe.

J'ai une idée consistant à avoir un onglet "Macros Data" dans lequel je peux mettre les plages des cellules à effacer et l'onglet correspondant, puis ma macro irait lire ces plages et effacerait les données au bon endroit. Je précise que je travaille sur MS Office 2016 en anglais!

Toutefois, je n'arrive pas à:
a) Trouver une formule excel qui ne me donne que l'adresse d'une cellule, soit: =cell("Address",cellule-dans-un-autre-onglet), car en mettant cela "normalement", j'obtiens: '[Survey--148993--FProducts--ClientsTop22.xlsm]Seafood - Shrimps'!$H$31, soit tout le chemin, alors que je ne veux que H13 ou $h$13, par exemple...
b) Puis, une macro qui irait construire la plage d'adresse à effacer... Je m'explique:

Onglet: Macro Data
Cellule A10: Nom de l'onglet / Cellule B10: Plage 1 / Cellule C10: Première cellule plage à effacer / Cellule D10: Dernière cellule plage à effacer
Cellule A11: Seafood - Shrimps / Cellule B11: ---- / Cellule C11: $H$13 / Cellule D11: $V$25 / Cellule E11: $H$13:$V$25 (une simple formule type: =C11&":"&D11, concatenera la plage à trouver)

La macro devrait ressembler à ça:

Sheets("contenu-de-la-cellule-A11-Onglet-Macro Data").Select ==> Resultat: Sheets("Seafood - Shrimps").Select
Range("contenu-de-la-cellule-E11").Select ==> Resultat: Range("$H$13:$V$25").Select
Selection.ClearContents ==> Selection.ClearContents

Peut-ont, peut-être, aussi mettre les deux premières lignes sur une pour avoir quelque chose comme ça ou on met sur une ligne le répertoire et la plage des cellules?

Sheets("contenu-de-la-cellule-A11-Onglet-Macro Data").Range("contenu-de-la-cellule-E11").Select
==> Résultat: Sheets("Seafood - Shrimps").Range("$H$13:$V$25").Select

J'accepte toute autre suggestion que mon idée... Il y a peut-être un moyen plus facile, mais je ne le sais pas!

Merci infiniment pour votre précieuse aide!

Bonne fin de journée à tous!
 

mad4max

XLDnaute Nouveau
Oui, bien sûr... Sauf que pour faire plus court, car le fichier d'origine n'est pas encore complètement fini, j'ai "inventé" des adresses de plage pour l'explication... Je mets le fichier, mais il faudra le comprendre ...

En fait, au final, je cherche une solution plus facile que celle que moi j'avais pensé... Car dans ma façon, il me faudra trois plombes pour aller copier les formules, aller manuellement changer les addresses dans chaque formule pour "construire" le texte de la macro...

Ce que je ne sais vraiment pas faire, c'est d'introduire en VBA des variables, soit de pouvoir pointer sur une cellule contenant ce que j'aimerais que ma macro mette...

Tu peux voir dans l'onglet "Macros Data" que je "construits" le texte de la macro et après je peux faire un copier-coller et ça marche, mais c'est long, fastidieux et compliqué... Je cherche une solution plus facile, d'ou mon post sur ce forum...

Il y a un deuxième post, relatif au même fichier... Car au final, j'aimerais pouvoir prendre l'onglet (qui s'autorenomme maintenant c'est le T01560) du total des résultats et l'exporter dans un autre fichier où je vais consolider toutes les réponses et les quantités.

J'ai aussi mis tous les onglets visibles. Normalement, l'onglet PARAM, Macro Data et ClientsToVisit ne sont pas visibles... Le départ c'est dans l'onglet INTRO...

Voilà... Je ne sais pas si c'est plus clair...
 

Pièces jointes

  • XLD-TestFile.xlsm
    205.4 KB · Affichages: 6

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
748
Réponses
25
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…