Programmation VBA [Résolu]

-
Bonjour,

j'ai un classeur Excel de plusieurs feuilles, pour les besoins d'une application j'ai réalisé une macro pour la selection de toutes les feuilles

voici la macro:
'''''''''''''''''''selection des feuilles'''''''''''''''''''''

Dim I As Byte 'déclare la variable I (Incrément)
Dim OS As Variant 'déclare la variable OS (OngletS)

ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
For I = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
    OS(I) = Sheets(I).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
Next I 'prochain onglet de la boucle
Sheets(OS).Select 'sélectionne les onglets du tableau OS



comment faire pour que la macro ne selectionne pas les feuilles "Source" , "calcul" et "tableaux"

merci

Configuration: Windows / Chrome 74.0.3729.169
Afficher la suite 

9 réponses

Messages postés
26516
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 octobre 2019
1829
0
Merci
Bonjour,

A l'avenir, merci de placer tes questions VBA dans le forum VBA (j'ai déplacé celle-ci).
Merci également d'utiliser les BALISES DE CODE.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Et pour répondre à ta question...... en faisant des IF
If Sheets(I).Name <> "Source" AND Sheets(I).Name<>"calcul" AND Sheets(I).Name<>"tableaux" Then
  '...
  '... ici ton code


  EndIf

Commenter la réponse de jordane45
0
Merci
bonjour
merci pour ta reponse

j'ai fais ça !
et ça bloque
je ne suis qu'un débutant, je sais ce qui ne va pas


'''''''''''''''''''selection des feuilles'''''''''''''''''''''

Dim i As Byte 'déclare la variable I (Incrément)
Dim OS As Variant 'déclare la variable OS (OngletS)
If Sheets(i).Name <> "Source" And Sheets(i).Name(i) <> "Modele" Then

ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)

For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
    OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
Next i 'prochain onglet de la boucle
Sheets(OS).Select 'sélectionne les onglets du tableau OS

End If
jordane45
Messages postés
26516
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 octobre 2019
1829 -
Déjà... OU SONT LES BALISES DE CODE ?????!!!!!

Ensuite... c'est dans la boucle qu il faut placer le code du if..... pas avant..
Commenter la réponse de jacksa3ada
Messages postés
9160
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
15 octobre 2019
1650
0
Merci
Bonjour à tous les deux

Quelque chose comme ça
'''''''''''''''''''selection des feuilles'''''''''''''''''''''
Dim i As Byte 'déclare la variable I (Incrément)
Dim OS() 'déclare la variable OS (OngletS)
ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
  If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
    OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
  End If
Next i 'prochain onglet de la boucle


RQ. celle là Sheets(OS).Select 'sélectionne les onglets du tableau OS me parait douteuse !

Cdlmnt
Commenter la réponse de ccm81
0
Merci
bonjour
j 'ai fais ça :
'
''''''''''''''''''selection des feuilles'''''''''''''''''''''
Sub Selection ()
Dim i As Byte 'déclare la variable I (Incrément)
Dim OS() 'déclare la variable OS (OngletS)
ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
  If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
    OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
  End If
Next i 'prochain onglet de la boucle
End Sub



cela ne fonctionne pas!!!!

rien n'est selectionné !!

je comprend pas pkoi
f894009
Messages postés
14791
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
16 octobre 2019
1177 -
Bonjour,

Balises, balises, ah mes belles balises de code……..


Que voulez-vous dire par:

rien n'est selectionné !!
Parce que dans le code, y a rein de selectionne!!!!!
Commenter la réponse de jacksa3ada
0
Merci
bonjour

je veux selectionner toutes les feuilles autre que la feuille "source" et la feuille "Modele" .

merci
f894009
Messages postés
14791
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
16 octobre 2019
1177 -
Re,

je veux selectionner toutes les feuilles autre
Certes, certes mais je repete que dans le code y a pas de selection mais:
OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
Commenter la réponse de jacksa3ada
0
Merci
Re,

il faut rajouter qelque chose pour selectionner

je suis un débutant



merci
f894009
Messages postés
14791
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
16 octobre 2019
1177 -
Re,

''''''''''''''''''selection des feuilles'''''''''''''''''''''
Sub Selection()
    Dim i As Long 'd?clare la variable I (Incr?ment)
    Dim OS() 'd?clare la variable OS (OngletS)
    ReDim OS(1 To Sheets.Count) 'redimensionne le tableau OS (de 1 au nombre d'onglets dans le classeur)
    For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
        If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
            OS(i) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
        End If
    Next i 'prochain onglet de la boucle
    Sheets(OS).Select          'selection des onglets
End Sub
Commenter la réponse de jacksa3ada
Messages postés
9160
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
15 octobre 2019
1650
0
Merci
Essaies ceci pour mettre 1 en A1 des feuilles selectionnées

Sub ok()
'''''''''''''''''''selection des feuilles'''''''''''''''''''''
Dim i As Byte 'déclare la variable I (Incrément)
Dim n As Long ' nombre de feuilles dans OS
Dim OS() 'déclare la variable OS (OngletS)
n = -1
For i = 1 To Sheets.Count 'boucle sur tous les onglets du classeur
  If Sheets(i).Name <> "Source" And Sheets(i).Name <> "Modele" Then
    n = n + 1
    ReDim Preserve OS(0 To n)
    OS(n) = Sheets(i).Name 'alimente le tableau OS avec le nom de l'onglet de la boucle
  End If
Next i 'prochain onglet de la boucle
Sheets(OS).Select 'sélectionne les onglets du tableau OS et mettre 1 en A1
Range("A1").Select
ActiveCell.Value = 1
End Sub

CDlmnt
Commenter la réponse de ccm81
0
Merci
Re,
ça bugue sur la derniere ligne

elle ne selectionne pas les feuilles (autre que Source et Modele)
ccm81
Messages postés
9160
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
15 octobre 2019
1650 -
Chez moi, ça fonctionne
https://mon-partage.fr/f/X4Iw3TdG/
Commenter la réponse de jacksa3ada
0
Merci
ouii ça marche
merci bcp mon frere
ccm81
Messages postés
9160
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
15 octobre 2019
1650 -
De rien

Bonne continuation et bonne soirée

cdlmt
Commenter la réponse de jacksa3ada