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!
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!