Erreur d'exécution 1004

Bonjour le forum,

Comme le dit le titre, j'ai dans mon fichier une erreur d'exécution 1004 quand sur la feuille("Décompte") je clique sur "Grand livre"

Le code VBA de "Grand livre" est la copie de celui de l'objet CB1 (dans VBA) qui lui fonctionne parfaitement (ne pas mettre de date dans CB1 juste cliquer sur "Valider").

Comme je n'ai plus besoin de l'objet CB1, je pensais passer par la case à cliquer "Grand livre", (donc sans boite de dialogue) mais rien à faire, quand ça ne veux pas, ça ne veux pas!

Je met le fichier en PJ. En panne d'inspiration, je n'ai plus d'idée. Quelqu'un parmi vous aura peut-être la solution.

Merci par avance.

Joseph

Bonjour,

Il vous faut passer à Power Query. J'ai installé une requête PQ dans votre onglet GL et créé une colonne Sélection dans votre tableau dans C1 pour sélectionner les dates.

Aux pros de Power Query : Je n'ai pas trouvé la solution pour figer les colonnes dans une requête. J'ai utilisé d'un bout de code pour remettre les colonnes à la bonne largeur, mais je pense qu'il y a plus simple.

Bonjour Eric,

Aujourd'hui je suis débordé. Je reviendrais demain pour discuter plus en avant.

J'ai juste remarqué que si je rajoute une ligne de saisie en "C1", votre formule en ligne G ne s'inscrit pas automatiquement.

En attendant, mille merci pour votre intervention et à demain

Joseph

Il faut régler les dates dans l'onglet Décompte.

Bonjour

J'avais jeté un oeil hier sur votre demande. Bien que la solution Power Query proposée par Eric Kegresse est certainement plus adaptée voici une solution par code si cela vous intéresse :

Dans la feuille Critère,
- mettez copier votre ligne de titre trouvée en C1 ligne 1 (code, compte,....) en ligne 8
- mettez vos codes en A2 et B2
- mettez vos dates en K2 et K4

Coller le code ci-dessous dans un module

Sub Test2()
Dim tablo()
Dim dlg As Integer, i As Integer
Dim j As Byte

With Sheets("C1")
    dlg = .Range("A" & Rows.Count).End(xlUp).Row

    ReDim tablo(dlg - 1, 5)
    j = 0
    For i = 0 To dlg - 1
        If .Cells(i + 1, 1) <> Sheets("Critere").Range("A2") And .Cells(i + 1, 1) <> Sheets("Critere").Range("B2") _
            And .Cells(i + 1, 3) >= Sheets("Critere").Range("K2") And .Cells(i + 1, 3) <= Sheets("Critere").Range("K4") Then
            For j = 0 To 5
                tablo(i, j) = .Cells(i + 1, j + 1)
            Next j
        End If
    Next i
End With

With Sheets("Critere")
    .Range("A9:F9").Resize(UBound(tablo) + 1) = tablo
    .Range("A9:F" & dlg).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End With
End Sub

Cordialement

Bonsoir Eric, Dan, Le forum,

Tout d'abord encore merci pour votre aide.

Eric, je me suis encore penché hier soir sur votre fichier (jusqu'à ce que mon nez touche le clavier), mais le constat est là, je n'y comprends rien. Du coup tout ce que je peux faire c'est dire ce que j'ai remarqué et qui me pose problème.

En Feuille ("C1") j'utilise déjà les colonnes G et H. Si je saisi un code inconnu en colonne A (par ex: 1) j'ai le message "Erreur de code" en colonne G. Si je saisi un code de crédit (par ex : 300) et que je mets un montant en débit, j'ai le message "Code de crédit" en colonne H. Donc si j'ai une erreur de saisie, elle interfère avec votre formule en colonne G.

La dernière ligne actuellement en feuille ("C1") est la 3080. Si je rajoute une ligne, la date n'est plus au format jj/mm/aaaa, mais mm/jj/aaaa; et votre formule ne s'affiche pas en colonne G. Si je ferme et réouvre le fichier, toujours aucune formule en G3081.

Mais comme dit, je suis complètement paumé et je sais pas du tout où intervenir. Et encore une question, Power Query est disponible depuis quelle version d'excel ?

Dan, eh bien voilà qui me fait plaisir. Vous ne devez sans doute pas vous souvenir de moi avec tous ceux que vous aidez, mais nous avons déjà échangé vers les années 2008/2010 je crois! Merci aussi pour votre intervention. Bien sûr qu'une solution par code m'intéresse aussi. Tout m'intéresse!

Je vais m'y mettre demain matin et vous tiendrais au courant.

Merci encore à tous les deux

Joseph

Bonsoir Eric, Dan, le forum,

J'ai essayé ton code, Dan, mais ça ne me donne pas le résultat attendu.

J'ai mis le fichier en PJ, voir feuille("Critere"). Les débit et crédits sont complètement mélangés.

Cordialement

Joseph

Bonjour Joseph,

Lorsque je tape 1 dans un nouvel enregistrement dans l'onglet C1 dans votre fichier d'origine, j'ai également la mention Erreur de code.

La question est de savoir pourquoi les colonnes 7 à 9 ne sont pas identifiées comme des champs alors que visiblement elles sont utilisées pour y mettre une formule. Ce dont je ne m'étais pas soucié dans ma solution.

Dans ma solution, j'ai ajouté une colonne Sélection qui indique si la date en colonne C est comprise dans le créneau des dates début et fin de l'onglet Décompte. En appuyant sur le bouton Grand Livre dans l'onglet Décompte, l'onglet GL est mis à jour.

Faites l'essai seulement en changeant les dates dans Décompte et cliquez sur Grand Livre, et regardez ce que vous obtenez dans l'onglet GL.

Ma colonne Sélection interfèrant avec le code existant, le mieux est de laisser tomber cette solution.

Bon courage.

Bonjour

eh bien voilà qui me fait plaisir. Vous ne devez sans doute pas vous souvenir de moi avec tous ceux que vous aidez, mais nous avons déjà échangé vers les années 2008/2010 je crois! Merci aussi pour votre intervention. Bien sûr qu'une solution par code m'intéresse aussi. Tout m'intéresse!

Waouh c'est loin cela. Je ne me souvenais plus du tout. C'était sous le pseudo Naddan ...--> https://forum.excel-pratique.com/s/goto/80352

J'ai essayé ton code, Dan, mais ça ne me donne pas le résultat attendu.
J'ai mis le fichier en PJ, voir feuille("Critere"). Les débit et crédits sont complètement mélangés.

Oups désolé je n'avais pas vérifié. Il te suffit de changer cette ligne dans le code

.Range("A9:F" & dlg).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

Par ceci

.Range("A9:A" & dlg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Cordialement

Bonjour Eric, le forum,

Je suis désolé.

Merci encore infiniment pour votre aide

Cordialement

Joseph

Bonjour Dan, le forum,

Effectivement, cette rectification règle pratiquement tout. mais il reste une ligne vide en A105. J'ai aussi rectifié sur la feuille("Critere") les cellules A2 (<>300) par 300 et la B2 (<>600) par 600 pour que l'ensemble des conditions du code soit pris en compte.

Y a t'il une possibilité pour la faire disparaitre cette ligne vide ?

Merci

Joseph

Y a t'il une possibilité pour la faire disparaitre cette ligne vide ?

Oui, ajoutez cette ligne juste avant .Range("A9:A" & dlg).SpecialCells....

dlg = .Range("A" & Rows.Count).End(xlUp).Row

J'ai aussi rectifié sur la feuille("Critere") les cellules A2 (<>300) par 300 et la B2 (<>600) par 600

Oui juste. Je les avais supprimées de mon coté pour exécuter le code.

Cordialement

Bonjour (soir) Dan, le forum,

Eh bien voilà, j'ai tout adapté, et ma foi, le résultat est impeccable. C'est tout à fait ce qu'il me fallait.

Encore merci Dan, et je n'oublie pas Eric. Merci à vous deux

A bientôt

Joseph

Rechercher des sujets similaires à "erreur execution 1004"