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

[VBA] - Sélectionner le classeur suivant

chewi

XLDnaute Junior
Bonjour à tous.

De nouveau besoin de votre aide!

Je souhaite via un bouton permettre à l'utilisateur de naviguer entre les classeurs.
A chaque fois qu'il appuie sur le bouton, le classeur suivant le classeur actif est activé.

Mais comment faire cela? l'objet Workbook ne possède pas la propriété Index ?

J'avais pensé utiliser: For i = 1 To Workbooks.Count
Workbooks(i+1).Activate

Mais alors je risque un "out of range" si je suis sur le dernier.

Avez-vous déjà réalisé cela? Comment procéder?

En vous remerciant grandement, Chewi
 

wilfried_42

XLDnaute Barbatruc
Re : [VBA] - Sélectionner le classeur suivant

bonjour chewi

dans un module


le but : est de mettre en memoire publique deux variable
nbclass ---> Nombre de classeurs ouvert
numclass --> N° du classeur en cours

A chaque ouverture de fichier, il faut lancer ouvre afin d'incrementer le nombre de fichiers ouvert
Pareille à la fermeture, il faut decrementer nbclass

ensuite on avance ou on recule
les macro sont faies pour tourner en boucle : Suivant sur dernier fichier ramenera au premier
precedent sur premier fichier ramenera au dernier fichier
 

chewi

XLDnaute Junior
Re : [VBA] - Sélectionner le classeur suivant

Bonjour Wilfried.

Tout d'abord merci pour cette réponse.

Mais l'inconvénient est que je ne peux pas commencer à compter lorsque l'on ouvre un fichier qu'on en ferme un autre, ... Cela me fait trop de "chipotage".
Même si ta méthode conviendrait parfaitement.

J'ai donc pensé à autre chose:

Code:
Sub Choixclasseur()
Dim i As Integer
Dim Reponse As Integer
For i = 1 To Workbooks.Count
    If i = Workbooks.Count Then i = 0
        Workbooks(i + 1).Activate
        Reponse = MsgBox("Est-ce le bon classeur ?", vbYesNo)
        If Reponse = 6 Then '=yes
            Exit Sub
        End If
Next
End Sub

Ce sera plus simple d'utilisation.

J'espère que ceci pourra aider d'autres utilisateurs.

Bien à tous et encore merci Wilfried

Chewi
 

Toine

XLDnaute Occasionnel
Re : [VBA] - Sélectionner le classeur suivant

et pourquoi pas un
IF i = workbook.count then
else
(ton truc de bouton )
na autan pour moi sa va po
a par si tu ouve tt les workbook dispo pour les compter io debut
mais sa risque d'étre long
suis tj a la bour ma snif
 
Dernière édition:

chewi

XLDnaute Junior
Re : [VBA] - Sélectionner le classeur suivant

Re à tous.

Besoin d'aide urgente.

J'ai un petit problème avec ce code:

Lorsque je suis sur le 1er classeur que j'active le code, il m'affiche le classeur suivant --> OK

Mais lorsque je suis de retour sur le 1er classeur, je reste bloqué dessus.

Je suppose que j'ai un problème avec ma boucle suivant la valeur que prend i.

Pouvez-vous m'aider?

Merci d'avance

Chewi

Code:
Dim i As Integer
Dim Reponse As Integer
For i = 1 To Workbooks.Count * 2
    If i = Workbooks.Count Then i = 0
    If i > Workbooks.Count Then i = 0
        i = i + 1
        Workbooks(i).Activate
        Reponse = MsgBox("Est-ce le bon classeur ?", vbYesNo)
        If Reponse = 6 Then '=yes
            Exit Sub
        End If
Next
End Sub
 

wilfried_42

XLDnaute Barbatruc
Re : [VBA] - Sélectionner le classeur suivant

re:
ton code :
Code:
Dim i As Integer
Dim Reponse As Integer
For i = 1 To Workbooks.Count * 2
    If i = Workbooks.Count Then i = 0
    If i > Workbooks.Count Then i = 0
        i = i + 1
        Workbooks(i).Activate
        Reponse = MsgBox("Est-ce le bon classeur ?", vbYesNo)
        If Reponse = 6 Then '=yes
            Exit Sub
        End If
Next
End Sub

Ton code devrait fonctionner mais personnellement je n'utiliste jamais une boucle for next pour gerer une boucle de ce type

essaye cela

Code:
Dim i As Integer
Dim Reponse As Integer
i = 0
do
i = i + 1
If i > Workbooks.Count Then i = 0
If i > 0 then 
        Workbooks(i).Activate
        Reponse = MsgBox("Est-ce le bon classeur ?", vbYesNo)
end if
while Reponse <> 6 
End Sub
 

chewi

XLDnaute Junior
Re : [VBA] - Sélectionner le classeur suivant

Bonjour Wilfried,

J'ai un problème suivant le nombre de classeur en fait.
S'il y en a 2, je reste bloqué sur le 1er après 1 tour.

S'il y en a 3, je ne sais affiché que le 1er et le 3ème.

Il y a toujours une valeur que i n'arrive pas à prendre avec ma boucle.

Je te remercie de ta réponse très rapide.
Je regarde ce que tu m'indique et je te tiens au courant.

Merci
 

chewi

XLDnaute Junior
Re : [VBA] - Sélectionner le classeur suivant

Wilfried, petite erreur:

"While without wend"

dois-je remplacer
"Do" et "while" par "wend" et "while" ou par "do" et "loop until" ?
 

Discussions similaires

Réponses
7
Affichages
449
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…