Signaler

Error 1004 VBA avec GEF acomba [Résolu]

Posez votre question christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - Dernière réponse le 9 juin 2017 à 08:37 par gbinforme
Bonjour,
Je fais une macro pour masquer des lignes. Ma macro marche super bien dans un fichier indépendant. Toutefois, lorsque je tente de le faire dans mon fichier excel GEF, cela me fait error 1004 erreur définie par l'application ou par l'objet. Je ne comprends pas pourquoi ...

Voici ma macro :
Sub Macro1()
' pour afficher les lignes
Cells.Select
Selection.EntireRow.Hidden = False

' Pour masquer les lignes

Dim ligne As Integer

For ligne = 10 To 370
If Cells(ligne, 9) = "M" Then
Rows(ligne & ":" & ligne).EntireRow.Hidden = True
End If
Next

End Sub

Le "M" représente une fonction si pour laquelle chaque M, on doit masquer la ligne
Je travail sur Excel 2010

Merci beaucoup d'avance
Afficher la suite 
Utile
+1
plus moins
Re,
Ouvrez le VBA
Ouvrez le module ou il y a le code
Pour mettre un point d'arret, mettez le curseur souris sur la gauche de la fenetre du code et faite un clic gauche souris. pour l'enlever, clic dessus le point

christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 7 juin 2017 à 18:22
C'est comme-ci l'erreur était à chacune des lignes... pourtant dans mon notre excel chacune des lignes fonctionnent très bien .. c'est frustrant !!
Répondre
Donnez votre avis
Utile
+0
plus moins
Re,
Y a une ligne visible en erreur?
christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 7 juin 2017 à 17:10
non aucune ...
Répondre
f894009 11874Messages postés dimanche 25 novembre 2007Date d'inscription 24 juin 2017 Dernière intervention - 7 juin 2017 à 17:20
Re,
Mettez des points d'arret a toutes les lgnes et lancez. Quand ca s'arrete sans erreur, vous appuyez sur F5 et ainsi de suite
Répondre
christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 7 juin 2017 à 17:24
Je comprends l'idée, mais comment faire pour mettre des points d'arrêt, je ne connais pas ça.
Merci de m'aider
Répondre
Donnez votre avis
Utile
+0
plus moins
Je te propose ce code VBA, qui est plus simple :


Sub Macro1()
  Dim lig As Integer: Application.ScreenUpdating = False
  ' affiche toutes les lignes
  Rows("1:" & Rows.Count).Hidden = False
  ' des lignes 10 à 370, masque les lignes où il y a
  ' un "M" en colonne I
  For lig = 10 To 370
    If Cells(lig, 9) = "M" Then Rows(lig).Hidden = True
  Next lig
End Sub


Ça devrait mieux marcher pour ton fichier excel GEF ;
et tu devrais l'utiliser aussi pour ton fichier excel
indépendant.

⚠  Si une ligne > 32 767, mettre Dim lig As Long
au lieu de Dim lig As Integer
 
gérard- 8 juin 2017 à 20:40
Alors peut-être comme ceci :


Sub Macro1()
  Dim ligne As Integer: Application.ScreenUpdating = False
  For ligne = 33 To 70
    With Cells(ligne, 9)
      If .Value = "M" Then .EntireRow.Hidden = True
    End With
  Next ligne
End Sub


 
Répondre
christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 8 juin 2017 à 20:44
Non plus ....
Répondre
gérard- 8 juin 2017 à 20:58
Désolé, c'était ma dernière idée ; mais dans ton logiciel GEF :

a) Peux-tu manuellement masquer / afficher des lignes ? car si c'est impossible,
peut-être que ton GEF Excel ne le peut pas non plus ? Comme GEF est un
Générateur d'États Financiers, peut-être fait-il toutes ses tâches sans offrir
à l'utilisateur la possibilité de masquer / afficher des lignes ?

b) Mets-tu bien le code VBA dans un module tel que Module1,
et pas dans ThisWorkbook ou le code d'une feuille ?

Ce sont juste 2 pistes, et j'arrête le suivi car je ne connais
pas assez les spécificités du logiciel GEF !
 
Répondre
christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 8 juin 2017 à 21:00
J'ai trouvé une façon de contourner mon problème ... j'ai fait 2 macros, une qui copie tout en valeurs dans un autre onglet qui sera utilisé seulement pour des fins de présentation et l'autre pour masquer les lignes et ça marche super bien. J'aurais quand même aimé réussir sans ce détour qui augmente la grosseur de mon fichier si jamais ...
Merci pour tout
Répondre
eriiic 20561Messages postés mardi 11 septembre 2007Date d'inscription ContributeurStatut 18 juin 2017 Dernière intervention - 8 juin 2017 à 21:53
Essaie quand même le filtre si tu as une ligne de titre, le résultat sera identique.
Tu peux le mettre et l'activer par macro également.
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,

mettre un simple filtre auto pour masquer tes "M" n'est pas suffisant ?
C'est prévu pour...
eric

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
f894009 11874Messages postés dimanche 25 novembre 2007Date d'inscription 24 juin 2017 Dernière intervention - 8 juin 2017 à 07:39
Bonjour a tous,

Son probleme n'est pas avec du VBA Excel mais avec du VBA via GEF Acomba qui apparemment est un peu capricieux, mais je ne connais pas alors....
Répondre
eriiic 20561Messages postés mardi 11 septembre 2007Date d'inscription ContributeurStatut 18 juin 2017 Dernière intervention - 8 juin 2017 à 07:51
Bonjour f894009,

Ah, je pensais que ça se contentait de fournir des données mais qu'on était dans de l'excel pur.
Je ne connais pas non plus :-)
eric
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour à tous,

Je ne connais non plus ton excel GEF mais je pense que la macro ne sais pas où elle se trouve. Vba excel fonctionne a priori par défaut sur la feuille active mais il me semble que tu pourrais essayer de le préciser ainsi avec la macro de gérard.
Sub Macro1()
  Dim lig As Integer: Application.ScreenUpdating = False
  With ActiveSheet
    ' affiche toutes les lignes
    .Rows("1:" & .Rows.Count).Hidden = False
    ' des lignes 10 à 370, masque les lignes où il y a
    ' un "M" en colonne I
    For lig = 10 To 370
      If .Cells(lig, 9) = "M" Then .Rows(lig).Hidden = True
    Next lig
  End With
End Sub
christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 8 juin 2017 à 19:16
Malheureusement, ce n'est pas la raison de l'erreur 1004 ...
J'y avait déjà également pensé, mais en réessayant ce n'est toujours pas la raison..
Répondre
gbinforme 13835Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 23 juin 2017 Dernière intervention - 9 juin 2017 à 08:37
Bonjour christ.lenoir,

l'autre pour masquer les lignes et ça marche super bien.
Si ta macro fonctionne sur autre onglet et pas sur le premier, cela vient sans doute de ta façon de l'appeler qui doit être différente car tu es sur le même classeur et l'erreur 1004 est dûe à l'impossibilité de positionnement sur une plage.
Répondre
Donnez votre avis
Utile
+0
plus moins
J'essaie maintenant la simple macro de masquer des lignes sans même les afficher et ça ne fonctionne pas. Par contre, lorsque je garde mon entrer enfoncé jusqu'à ce que le message d'erreur s'en va, j'arrive à mes fins...
Sub Masquer_lignes()
'

' Pour masquer les lignes

Dim ligne As Integer

For ligne = 33 To 70
If Cells(ligne, 9) = "M" Then
Rows(ligne & ":" & ligne).EntireRow.Hidden = True
End If
Next

End Sub

L'erreur ce trouve donc la dedans, mais dans un excel indépendant, ça marche super bien ...
Donnez votre avis
Utile
+0
plus moins
Pas une solution à ton pb mais peut-être le message d'erreur à valider une fois ou deux seulement :
Sub Macro1()
    Dim lig As Long, pl As Range
    For lig = 10 To 370
        If Cells(lig, 9) = "M" Then
            If pl Is Nothing Then
                Set pl = Cells(lig, 9)
            Else
                Set pl = Union(pl, Cells(lig, 9))
            End If
        End If
    Next lig
    ' affiche toutes les lignes
    Rows.Hidden = False
    ' des lignes 10 à 370, masque les lignes où il y a
    ' un "M" en colonne I
    If Not pl Is Nothing Then pl.EntireRow.Hidden = True
End Sub

en attendant de trouver la cause réelle...
eric
christ.lenoir 17Messages postés mardi 6 juin 2017Date d'inscription 8 juin 2017 Dernière intervention - 8 juin 2017 à 20:33
Malheureusement non, toujours ce foutu message d'erreur ...
merci quand même
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !