RESOLU enchainement de macros

RESOLU enchainement de macros - VB/VBA/VBS - Programmation

Marsh Posté le 21-11-2005 à 15:50:38    

hello hello.
 
j'ai un souci en exécutant ce qui suit
 
Sub GpEffLocVides()
Dim NomFeuil
NomFeuil = "GroupesEffLocVides"
'Mise en place de la nouvelle feuille
     Sheets.Add After:=Sheets(Worksheets.Count)
     ActiveSheet.Name = NomFeuil
'mise en place de la ligne d'intitulé de colone
     Sheets("Groupes" ).Activate
     Rows(1).Select
     Selection.Copy
     Sheets(NomFeuil).Select
     Range("A1" ).Select
     ActiveSheet.Paste
     Application.CutCopyMode = False
'Ta variable de ligne pour le test de valeur
Dim l
l = 2 'car ta première ligne ce sont tes intitulés
'ta variable de linge pour la recopie
Dim lig
lig = 2
'on met en place une boucle pour passer tes valeur
Do While Sheets("Groupes" ).Cells(l, 1) <> "" 'fait tant que n'est pas vide
    'Si Eff locaux vides = "" et si eff locaux vides = 0
     If Sheets("Groupes" ).Cells(l, 23) = "" And _
          Sheets("Groupes" ).Cells(l, 23) = 0 Then
     'tu copie la ligne dans la nouvelle feuille
          Sheets("Groupes" ).Activate
          Rows(l).Select
          Selection.Copy
          Sheets(NomFeuil).Activate
          Cells(lig, 1).Select
          ActiveSheet.Paste
          Application.CutCopyMode = False
     'tu ajoute 1 à ligne pour la prochaine copie
          lig = lig + 1
     'tu supprime la ligne
          Sheets("Groupes" ).Rows(l).Delete
     Else
          'tu passes à la ligne suivante
          l = l + 1
     End If
Loop
Call GpDatEffLocVides
End Sub
----------------------------------------------------------------------
Sub GpDatEffLocVides()
Dim dat
dat = "& Year(Date) - 1" '2004'
'mise en place de la ligne d'intitulé de colone
     Sheets("Groupes" ).Activate
     Rows(1).Select
     Selection.Copy
     Sheets("GroupesEffLocVides" ).Select
     Range("A1" ).Select
     ActiveSheet.Paste
     Application.CutCopyMode = False
'Ta variable de ligne pour le test de valeur
Dim l
l = 2 'car ta première ligne ce sont tes intitulés
'ta variable de linge pour la recopie
Dim lig
lig = Sheets("GroupesEffLocVides" ).Cells(1, 1).End(xlDown).Row + 1
'on met en place une boucle pour passer tes valeur
Do While Sheets("Groupes" ).Cells(l, 1) <> "" 'fait tant que n'est pas vide
    'Si Date Eff locaux vides = "" et si date eff locaux vides = 0
     If Sheets("Groupes" ).Cells(l, 24) = "" And _
          Sheets("Groupes" ).Cells(l, 24) = 0 Then
     'tu copie la ligne dans la nouvelle feuille
          Sheets("Groupes" ).Activate
          Rows(l).Select
          Selection.Copy
          Sheets("GroupesEffLocVides" ).Activate
          Cells(lig, 1).Select
          ActiveSheet.Paste
          Application.CutCopyMode = False
     'tu ajoute 1 à ligne pour la prochaine copie
          lig = lig + 1
     'tu supprime la ligne
          Sheets("Groupes" ).Rows(l).Delete
     Else
          'tu passes à la ligne suivante
          l = l + 1
     End If
Loop
End Sub
 
une fois exécuté "GpEffLocVides()" s' il y a au moins une ligne de trouvée, GpDatEffLocVides() se déroule sans problème.
par contre, s'il n'y a aucune ligne de trouvée j'ai un message d'erreur "erreur définie par l'application ou par l'objet"
 
HELP !!!  
 
 :pt1cable:


Message édité par peanutz le 22-11-2005 à 14:39:58
Reply

Marsh Posté le 21-11-2005 à 15:50:38   

Reply

Marsh Posté le 21-11-2005 à 16:17:12    

Salut peanutz,
Sur ta 2ème macro appelée dans la première.

Code :
  1. Sub GpDatEffLocVides()
  2. Dim dat
  3. dat = "& Year(Date) - 1" '2004'

A quoi te sert cette variable tu l'as mise en place et tu l'utilise pas ?
 

Code :
  1. 'mise en place de la ligne d'intitulé de colone
  2.      Sheets("Groupes" ).Activate
  3.      Rows(1).Select
  4.      Selection.Copy
  5.      Sheets("GroupesEffLocVides" ).Select
  6.      Range("A1" ).Select
  7.      ActiveSheet.Paste
  8.      Application.CutCopyMode = False

Tu as déjà mis en place sur cette même feuilles les intitulé de colonne tu peux donc supprimer cette partie de la macro.
 
Je pense que l'erreur vient de ton lig, je te propose ce calcul pour Lig, j'avais pas pensé à l'éventualité d'un tableau vide.

Code :
  1. 'ta variable de ligne pour la recopie
  2. Dim lig
  3. if Sheets("GroupesEffLocVides" ).Cells(1, 1).End(xlDown).Row=65536 then
  4.        Lig = 2
  5. else
  6.        Lig = Sheets("GroupesEffLocVides" ).Cells(1, 1).End(xlDown).Row + 1

Essayes et dis moi ce qu'il en est ainsi que la ligne de code où ça bloque :)
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 21-11-2005 à 17:06:04    

en essayant ton code il me dit "bloc if sans end if"
il bloque à la dernière ligne sur le end sub
 
à l'origine la variable dat = "& Year(Date) - 1" '2004' c'était pour lui dire : si la date est inférieur à 01/01/2004 ou si la date est vide
 copie à la suite des lignes sur la feuille "groupesefflocvides" à la suite des données précédentes, même si le tableau est vide

Message cité 1 fois
Message édité par peanutz le 21-11-2005 à 17:20:25
Reply

Marsh Posté le 21-11-2005 à 17:07:27    

ben mets un endif [:pingouino]

Reply

Marsh Posté le 21-11-2005 à 17:11:14    

où ? il y en a déjà un avant le loop.
et si je le mets à la place du End Sub il me dit bien sûr qu'un End Sub est attendu
 :pfff:


Message édité par peanutz le 21-11-2005 à 17:19:24
Reply

Marsh Posté le 21-11-2005 à 17:20:01    

betsamee a écrit :

ben mets un endif [:pingouino]


Loll oui je l'ai pas mis ;)
ici :

Code :
  1. 'ta variable de ligne pour la recopie
  2. Dim lig
  3. if Sheets("GroupesEffLocVides" ).Cells(1, 1).End(xlDown).Row=65536 then
  4.        Lig = 2
  5. else
  6.        Lig = Sheets("GroupesEffLocVides" ).Cells(1, 1).End(xlDown).Row + 1
  7. End if


 

peanutz a écrit :

à l'origine la variable dat = "& Year(Date) - 1" '2004' c'était pour lui dire : si la date est inférieur à 01/01/2004 ou si la date est vide
 copie à la suite des lignes sur la feuille "groupesefflocvides" à la suite des données précédentes, même si le tableau est vide

ok
 
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 22-11-2005 à 14:39:36    

ok ça marche ! GREAT  
merci merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed