Formule qui ne fonctionne plus

Bonjour,

J'ai fait un petit tableur excel pour ma facturation et pour récapituler les éléments de la facture crée dans un listing facture, j'ai creé un bouton sur la facture qui est rattaché à une macro. mais cette dernière ne fonctionne plus. j'ai vérifié que le nom des onglets était correct, je ne comprends pas où se trouve l'erreur.

Voici la macro en question

Sub Archiver()
ligne = Sheets("Listing F").Range("A2").End(xlDown).Row + 1
Sheets("Listing F").Range("A" & ligne).Value = Sheets("FACTURE").Range("B16")
Sheets("Listing F").Range("B" & ligne).Value = Sheets("FACTURE").Range("E16")
Sheets("Listing F").Range("c" & ligne).Value = Sheets("FACTURE").Range("G16")
Sheets("Listing F").Range("d" & ligne).Value = Sheets("FACTURE").Range("G3")
Sheets("Listing F").Range("e" & ligne).Value = Sheets("FACTURE").Range("M3")
Sheets("Listing F").Range("e" & ligne).Value = Sheets("FACTURE").Range("M4")
Sheets("Listing F").Range("f" & ligne).Value = Sheets("FACTURE").Range("B39")
Sheets("Listing F").Range("g" & ligne).Value = Sheets("FACTURE").Range("G41")

Sheets("FACTURE").Range("A20:F23").ClearContents
Sheets("FACTURE").Range("A18,A24,A25,A26,A27,A28,A29,A30,A31,A32,A33").ClearContents
Sheets("FACTURE").Range("D20,D21, D22, D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,D33").ClearContents

Sheets("FACTURE").Range("B39").ClearContents
Sheets("FACTURE").Range("G3").ClearContents

Sheets("FACTURE").Range("G16").Value = Sheets("FACTURE").Range("G16").Value + 1

Sheets("FACTURE").Range("E14").ClearContents

End Sub

Cela met un message d'erreur "erreur d’exécution '1004' erreur définie par l'application ou par l'objet.

Merci pour votre aide

Bonne journée

Francis

Bonjour Francis84

Comment voulez-vous qu'on vous aide sans savoir quelle ligne déclenche ce message (surlignée en jaune)

A+

Bonjour à tous.

Francis84, le mieux c'est de nous mettre une copie de votre fichier avec quelques données.

Cordialement;

Bonjour JExcel2fr et Claude,

Merci pour vos retours.

La première ligne qui se met en jaune est : Sheets("Listing F").Range("A" & ligne).Value = Sheets("FACTURE").Range("B16")

Je vais essayer de faire une copie allégée du fichier.

Merci

Voici le fichier,

Merci de votre aide

Bonne soirée

Francis

Bonsoir

Code a mettre a la place du votre

Sub Archiver()
    Dim ligne As Long
    ligne = Sheets("Listing F").Cells(Rows.Count, 1).End(xlUp).Row + 1

    Sheets("Listing F").Range("A" & ligne).Value = Sheets("FACTURE").Range("B16")
    Sheets("Listing F").Range("B" & ligne).Value = Sheets("FACTURE").Range("E16")
    Sheets("Listing F").Range("C" & ligne).Value = Sheets("FACTURE").Range("G16")
    Sheets("Listing F").Range("D" & ligne).Value = Sheets("FACTURE").Range("G3")
    Sheets("Listing F").Range("E" & ligne).Value = Sheets("FACTURE").Range("M3")
    Sheets("Listing F").Range("E" & ligne).Value = Sheets("FACTURE").Range("M4")
    Sheets("Listing F").Range("F" & ligne).Value = Sheets("FACTURE").Range("B39")
    Sheets("Listing F").Range("G" & ligne).Value = Sheets("FACTURE").Range("G41")

    Sheets("FACTURE").Range("A20:F23").ClearContents
    Sheets("FACTURE").Range("A18,A24,A25,A26,A27,A28,A29,A30,A31,A32,A33").ClearContents
    Sheets("FACTURE").Range("D20,D21,D22,D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,D33").ClearContents

    Sheets("FACTURE").Range("B39").ClearContents
    Sheets("FACTURE").Range("G3").ClearContents

    Sheets("FACTURE").Range("G16").Value = Sheets("FACTURE").Range("G16").Value + 1

    Sheets("FACTURE").Range("E14").ClearContents
End Sub

Bonne soirée

Bonsoir Francis84
Mettre ce code à la place de l'existant:

Dim WS1 As Worksheet, WS2 As Worksheet
Sub Archiver()
    Set WS1 = Sheets("Listing F")
    Set WS2 = Sheets("FACTURE")
    With WS1
        ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
            .Range("A" & ligne).Value = WS2.Range("B16")
            .Range("B" & ligne).Value = WS2.Range("E16")
            .Range("C" & ligne).Value = WS2.Range("G16")
            .Range("D" & ligne).Value = WS2.Range("G3")
            .Range("E" & ligne).Value = WS2.Range("M3")
            .Range("E" & ligne).Value = WS2.Range("M4")
            .Range("F" & ligne).Value = WS2.Range("B39")
            .Range("G" & ligne).Value = WS2.Range("G41")
    End With
    With WS2
        .Range("A18,A20:F23,A24:A33,D20:D33,B39,G3,E14").ClearContents
        .Range("G16").Value = .Range("G16").Value + 1
    End With
End Sub

EDIT: Joco7915 a été plus rapide
Cdt,
Papy Henri

Bonsoir,

ceci m'interpelle :
.Range("E" & ligne).Value = WS2.Range("M3")
.Range("E" & ligne).Value = WS2.Range("M4")

@ bientôt

LouReeD

Une proposition de code :

Sub Archiver()
    Dim Listing, Facture, Ligne, I
    Listing = Array("A", "B", "C", "D", "E", "F", "G")
    Facture = Array("B16", "E16", "G16", "G3", "M4", "B39", "G41")
    Ligne = Sheets("Listing F").Range("A" & Rows.Count).End(xlDown).Row + 1
    With Sheets("FACTURE")
        For I = 0 To 6
            Sheets("Listing F").Range(Listing(I) & Ligne).Value = .Range(Facture(I))
        Next I
        .Range("EffaceDonnées").ClearContents
        .Range("G16").Value = .Range("G16").Value + 1
    End With
End Sub

Pour effacer les données de la feuille FACTURE j'ai définie une plage regroupant toutes les cellules concernées sous le nom "EffaceDonnées".
La liste des cellules me semble pas cohérente mais j'ai repris la liste de votre code.

C'est doublon avec les autres réponses, c'est juste pour apporter une autre vision : les tableaux des cellules et colonnes sources et cibles pour créer une boucle de recopies et la plage nommée pour l'effacement des données.

Le fichier :

@ bientôt

LouReeD

Bonjour à tous.

Francis84, en ce qui me concerne, j'ai une autre vision de l'aide que je porte aux demandeurs.

Je ne réponds pas, en général, juste pour répondre à une question posée.

J'ai besoin d'avoir une vision plus large de ce qui est demandé. En général, une demande implique d'autres demandes, dans la mesure où elle fait partie d'un tout.

De votre demande, j'en déduis que vous cherchez à créer un fichier de gestion.

Si vous cherchez à faire une facture, cela implique que vous vendez des produits. Si vous vendez des produits (ou des prestations), vous avez un stock à gérer (Entrée, Sortie....). Vous avez donc des fournisseurs et des clients. Vos clients vous passent des commandes, je suppose.

Alors, à tout hasard, je vous mets un fichier que j'avais aidé à mettre en place pour un autre demandeur. Vous avez donc une vision globale de ce qu'il faudrait faire.

Ce fichier sera probablement à adapter à vos besoins spécifiques. Je peux essayer de vous accompagner pour le réaliser.

Dites-moi.

Cordialement

Bonjour,

Je vous remercie tous très sincèrement pour vos contributions éclairées qui m'ont sorties d'affaire

Bien cordialement

Francis

Rechercher des sujets similaires à "formule qui fonctionne"