Ligne vide

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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
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
 

Hellboy

XLDnaute Accro
Bonjour Christophe

Une suggestion:


Option Explicit

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


oops: Bonjour Pascal76

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

Nikolaï

XLDnaute Nouveau
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
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Christophe, bonjour le froum,

Essai comme ça :


Public Sub test()
Dim x As Byte 'déclare la variable x
Dim Fin As Integer 'déclare la variable Fin

Application.ScreenUpdating = False 'empêche la visualisation des changements d'onglets

For x = 1 To Sheets.Count 'boucle sur tous les onglets
With Sheets(x)
Fin = .Range('A1').End(xlUp).Row + 1 'définit la variable Fin
If Fin < 50 Then 'si Fin < 50
Call Macro1 'Macro1
Else 'sinon
Call Macro2 'Macro2
End If 'fin de la condition
End With
Next x 'prochain onglet

Application.ScreenUpdating = True 'permet la visualisation des changements d'onglets

End Sub

É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
 

PascalXLD

XLDnaute Barbatruc
Modérateur
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 :eek:

Bonne journée
 
C

Christophe

Guest
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.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise