Programmation VBA

Résolu/Fermé
jacksa3ada - Modifié le 4 juin 2019 à 17:16
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 4 juin 2019 à 19:26
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

9 réponses

jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
3 juin 2019 à 17:17
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

0
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
0
jordane45 Messages postés 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
3 juin 2019 à 19:21
Déjà... OU SONT LES BALISES DE CODE ?????!!!!!

Ensuite... c'est dans la boucle qu il faut placer le code du if..... pas avant..
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
3 juin 2019 à 23:04
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
0
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
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
4 juin 2019 à 17:12
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!!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bonjour

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

merci
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
4 juin 2019 à 17:32
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
0
Re,

il faut rajouter qelque chose pour selectionner

je suis un débutant



merci
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
4 juin 2019 à 18:01
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
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
4 juin 2019 à 18:05
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
0
Re,
ça bugue sur la derniere ligne

elle ne selectionne pas les feuilles (autre que Source et Modele)
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
4 juin 2019 à 18:11
Chez moi, ça fonctionne
https://mon-partage.fr/f/X4Iw3TdG/
0
ouii ça marche
merci bcp mon frere
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
4 juin 2019 à 19:26
De rien

Bonne continuation et bonne soirée

cdlmt
0