Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Christophe
  • 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 !

C

Christophe

Guest
Bonjour,
L’autre jour Creepy m’a donné la réponse à ma question qui était de traduire la phrase suivante en vba.
Si la première ligne vide est <50 lancer la macro 1 sinon lancer la macro 2. Sa solution marche très bien mais j’avais oublié de préciser que j’aimerai que le traitement s’applique à toutes les feuilles du classeur (163) et je ne sais pas comment faire pour activer la feuille suivante


Public Sub test()
Dim Fin As Integer
Fin = Sheet1.Range('A1').End(xlUp).Row + 1
For Each Sheet In ActiveWorkbook.Sheets
If Fin < 50 Then
Call Macro1
Else
Call Macro2
End If
Next
End Sub

Mon For Each Sheet... ne marche pas, ma macro tourne toujours sur la feuille 1??

Merci de votre aide
 
Bonjour

Ne sachant pas ce que fait macro1 et macro 2 je te propose

Public Sub test()
Dim Fin As Integer
Dim Sh as Sheet
apllication.screenupdating=false
For Each sh In ActiveWorkbook.Sheets
sh.select
Fin = Range('A1').End(xlUp).Row + 1
If Fin < 50 Then
Call Macro1
Else
Call Macro2
End If
Next
End Sub
 
Bonjour Christophe

Une suggestion:




oops: Bonjour Pascal76

Message édité par: Hellboy, à: 25/10/2005 13:59
 
Bonjour

essaye cela peut-etre.

Public Sub test()
Dim Fin As Integer
Fin = Sheet1.Range('A1').End(xlUp).Row + 1
For SHEET_NR = 1 To ActiveWorkbook.Sheets.Count
Sheets(SHEET_NR).Select
If Fin < 50 Then
'Call Macro1
Else
'Call Macro2
End If
Next
End Sub

utilise application.ScreenUpdating=False pour eviter de voir défiler toutes les feuilles.

ou sinon vous pouvez faire la meme chose mais sans selectionnez les feuilles mais attention après dans vos macros.

Public Sub test()
Application.ScreenUpdating = False
For SHEET_NR = 1 To ActiveWorkbook.Sheets.Count
If Sheets(SHEET_NR).Range('A1').End(xlUp).Row + 1 < 50 Then
Call Macro1
Else
Call Macro2
End If
Next
End Sub
 
Bonjour Christophe, bonjour le froum,

Essai comme ça :



Édition

Arf... Mort de rire. Ça va pas non de vous jeter sur les questions comme des mort-de-faim !!! Bonjour Pascal, Heelboy et Nokolaï...

Message édité par: Robert, à: 25/10/2005 14:05
 
Re tout le monde

Juste une petite précision :

comme le souligne Nikolai ATTENTION à ce qui se passe dans macro1 et macro2

Si tes macros interviennent sur la feuille active il te faudra absolument passé par un select de ta feuille

Par contre Nikolai dans ton premier code tu appliques le code sur toutes les feuilles par rapport au résultat obtenu sur la feuille1 😱

Bonne journée
 
Merci à tous pour votre aide et votre rapidité. C’en est un vrai plaisir d’avoir des problèmes avec vba. J’ai essayé celle de Pascal76 et ça fonctionne très bien, j’essaierai les autres aussi mais pas aujourd’hui car grâce à vous ma journée de boulot va s’achever plus tôt que prévu.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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