RESOLU enchainement de macros - VB/VBA/VBS - Programmation
Marsh Posté le 21-11-2005 à 16:17:12
Salut peanutz,
Sur ta 2ème macro appelée dans la première.
Code :
|
A quoi te sert cette variable tu l'as mise en place et tu l'utilise pas ?
Code :
|
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 :
|
Essayes et dis moi ce qu'il en est ainsi que la ligne de code où ça bloque
@+
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
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
Marsh Posté le 21-11-2005 à 17:20:01
betsamee a écrit : ben mets un endif |
Loll oui je l'ai pas mis
ici :
Code :
|
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 |
ok
@+
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 !!!
Message édité par peanutz le 22-11-2005 à 14:39:58