Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
719 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  RESOLU enchainement de macros

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

RESOLU enchainement de macros

n°1249963
peanutz
Posté le 21-11-2005 à 15:50:38  profilanswer
 

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
mood
Publicité
Posté le 21-11-2005 à 15:50:38  profilanswer
 

n°1249995
watashi
La démotivation : JAMAIS !
Posté le 21-11-2005 à 16:17:12  profilanswer
 

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 ;-)
n°1250056
peanutz
Posté le 21-11-2005 à 17:06:04  profilanswer
 

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
n°1250059
betsamee
Asterisk Zeperyl
Posté le 21-11-2005 à 17:07:27  profilanswer
 

ben mets un endif [:pingouino]

n°1250064
peanutz
Posté le 21-11-2005 à 17:11:14  profilanswer
 

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
n°1250078
watashi
La démotivation : JAMAIS !
Posté le 21-11-2005 à 17:20:01  profilanswer
 

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 ;-)
n°1250731
peanutz
Posté le 22-11-2005 à 14:39:36  profilanswer
 

ok ça marche ! GREAT  
merci merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  RESOLU enchainement de macros

 

Sujets relatifs
[Résolu] Session : marche pô :([RESOLU] Comment faire une requête à l'intérieur d'une requête ?
(VC++/Win32) [resolu] récupérer le texte d'un tooltip grace à son hwndRESOLU insertion de l'année N-1 à concaténer avec un mot
Pb résolu: Empécher la superposition des commonbuttons[Javascript] position X et Y d'une balise HTML [Résolu]
init de la classe mère [résolu]pb résolu: créer un lien hypertext
[Résolu] [Excel] Régression pas à pas[Résolu] Gestion utilisateur en PHP
Plus de sujets relatifs à : RESOLU enchainement de macros


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR