• Initiateur de la discussion Initiateur de la discussion David
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

David

XLDnaute Occasionnel
Bonjour à tous

je cherche comment faire pour sélectionner différents onglet en fonction de la valeur d'une cellule.

Normalement pour faire une selection multiple d'onglet on met :

Code:
Sheets(Array("Feuill1", "Feuill2")).Select

mais je voudrais que la Feuill1 soit sélectionné uniquement si la valeur de la cellule "total1" à une valeur supérieur à 0. Comment on imbrique un if dans le Array ou quelle est la bonne méthode?

Code:
If Range("total1").Value > 0 Then

Sheets(Array("Feuill1", "Feuill2")).Select

End If
Si la valeur total1 est inférieur ou égal à 0 ça ne doit prendre que la Feuill2 ou que la Feuill1 si la valeur total2 est inférieur ou égal à 0, ou les deux si les valeur total1 et total2 sont supérieur à 0.

J'ai plus de 2 feuilles et chaque onglet à sa cellule nommée total1, total2, etc,etc... 😉

Merci
 
Dernière édition:
Re : If dans Array

Bonjour à tous

J'ai un petit problème, j'ai une vingtaine d'onglet et tous n'ont pas une cellule total, comment je peux contourner le problème, à part créer une cellule total sur tous les onglets?

Y a t'il moyen de définir une liste?

[edit] Il faut que j'arrive à définir une liste d'onglet, en plus depuis que le fichier existe certaines feuilles ont été supprimé, du coup les numéros ne se suivent pas forcément, je n'ai pas de feuille 10,15,16,18 et 22. (1=>24)

Merci
 
Dernière édition:
Re : If dans Array

Re

Teste cette macro

Code:
Option Base 1
Sub test()
ReDim tablo(1)
For Each sh In Sheets
 For Each nom In ThisWorkbook.Names
  If InStr(nom.RefersTo, sh.Name) <> 0 And InStr(nom.Name, "total") <> 0 Then
    If Range(nom) > 0 Then
      tablo(UBound(tablo)) = sh.Name
      ReDim Preserve tablo(UBound(tablo) + 1)
    End If
   End If
 Next
Next
ReDim Preserve tablo(UBound(tablo) - 1)
On Error Resume Next
 Sheets(tablo).Select
On Error GoTo 0
End Sub
 
Re : If dans Array

Merci pierrejean

Ça marche!!!

J'ai quand même une petite question, je pensais que le total1 était pour la feuil1, etc, etc... mais quand j'ai testé j'avais un message d'erreur, j'ai du faire les cellules total en fonction de la position de la feuille et non de son nom et ça marchait. j'ai donc laissé les "total" que j'avais mis sur les onglets qui en avaient besoin (14,15,16,17) et comme avant il fallait que se soit dans l'ordre, je me suis dit si j'inverse la position, ça ne va plus marcher, mais la ça marche quelque soit l'endroit ou je mets les onglets, il y a un changement par rapport à la macro précedente sur la position ou l'index de la feuille? Il n'ont ni la position, ni le nom du chiffre de total, sur quoi ça se base?

Merci.
 
Re : If dans Array

Re
Le fonctionnement de la macro est le suivant:
pour toutes les feuilles (for each sh in sheets)
On cherche dans tous les noms du fichier (Thisworkbook.names)
Si un nom fait reference au nom de la feuille et si le nom comporte le mot "total "
If InStr(nom.RefersTo, sh.Name) <> 0 And InStr(nom.Name, "total") <> 0 Then
et si dans la cellule portant ce nom il y a plus que 0
If Range(nom) > 0 Then
alors mettre dans le tableau le nom de la feuille
tablo(UBound(tablo)) = sh.Name
puis preparer le tableau pour la feuille suivante
ReDim Preserve tablo(UBound(tablo) + 1)
on passe a la feuille suivante
next
on annule la derniere preparation
ReDim Preserve tablo(UBound(tablo) - 1)
et enfin on selectionne les feuilles
Sheets(tablo).Select

on est donc independant de la position des feuilles autant que de leur index (et même du nom des cellules total pour peu qu'il contienne le mot total (Attention cependant a n'avoir qu'un nom par feuille contenant "total")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
482
Réponses
15
Affichages
782
Réponses
3
Affichages
256
Réponses
1
Affichages
313
Retour