Réparation après utilisation d'une macro

Bonjour à tous,

Je travaille sur un classeur excel qui présente une liste de travaux à faire.

Une fois que les travaux sont finis, j'ai créé une colonne (un critère) nommé "terminé" où l'on marque "Y".

J'ai créé un bouton nommé "facturation" qui permet de copier les lignes des travaux terminé vers un autre classeur.

Le problème est que cette procédure marche une fois. Ensuite je ferme le classeur de facturation, la macro n'arrive plus à le rouvrir et si je tente de l'ouvrir manuellement une erreur se présente :

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

-<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">

<logFileName>error034080_02.xml</logFileName>

<summary>Des erreurs ont été détectées dans le fichier « C:\Users\m.niggel\Desktop\Facturation2.xlsx »</summary>

-<removedFeatures summary="Liste des fonctionnalités supprimées ci-dessous :">

<removedFeature>Fonction supprimée: Validation des données dans la partie /xl/worksheets/sheet1.xml</removedFeature>

</removedFeatures>

</recoveryLog>

Je présume que je fais une bétise dans ma macro qui transforme le document mais j'ai mis facturation en xlsx ou en xlsm et rien ne change.

Je vous envoie mon tableau, je débute en vba, j'ai donc "bricolé" avec ce que j'ai trouvé sur le net. J'ai peut être fais des hérésies et je m'en excuse

Dans l'attente de vous lire,

Maxime.

24planning.xlsm (27.26 Ko)

Bonsoir,

Note que l'extension fait partie d'un nom de classeur. Il est possible que tes problèmes viennent de là...

Il faudrait voir ton classeur Facturation2.xls?

On va te réécrire la macro, sans sélectionner ni activer ! non seulement c'est inutile, mais tu le fais partout au moins deux fois !

Les variables se déclarent en tête de procédure, avant tout code exécutable : note-le également ! Tu en utilises sans les déclarer et tu en déclares d'autres au milieu du gué !

Cordialement.

Merci pour ton retour,

Je m'occupe des variables, c'est facile ^^, cependant a la place de sélectionner et activer je dois mettre quoi du coup ? Je voulais être bien sûr que la macro travaille sur le bon classeur.

Voila facturation >

Edit : en fait je viens de voir que j'avais collé une mauvaise version, la macro s'articule en deux partie, une partie copie et une partie qui enlève les doublons sur facturation. Le fait est que j'ai mis de côté la suppression des doublons car j'ai mon tout récent problème de bug d'ouverture

13planning.xlsm (26.41 Ko)
23facturation2.xlsx (9.21 Ko)

cependant a la place de sélectionner et activer je dois mettre quoi du coup ?

On qualifie les expressions, et on place sous bloc With dès lors qu'il y a répétitions... Le code sera plus rapide !

Private Sub CommandButton1_Click()
    Dim Fact(), f%, n%, i%
    ActiveWorkbook.Save
    With Worksheets("Planning")
        n = .Cells(.Rows.Count, 8).End(xlUp).Row
        For i = 3 To n
            If .Cells(i, 8) = "Y" Then
                ReDim Preserve Fact(f)
                Fact(f) = .Cells(i, 1).Resize(, 8).Value
                f = f + 1
            End If
        Next i
    End With
    On Error GoTo nonOuvert
    With Workbooks("maxn_Facturation2.xlsx").Worksheets("Facturation")
        On Error GoTo 0
        n = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        For i = 0 To f - 1
            .Cells(n + i, 1).Resize(, 8).Value = Fact(i)
        Next i
    End With
    Exit Sub
nonOuvert:
    Workbooks.Open "maxn_Facturation2.xlsx"
    Resume
End Sub

Pour le classeur facturation, il s'est ouvert après message d'éléments endommagés et en supprimant les validations...

Cordialement.

16maxn-planning.xlsm (23.99 Ko)

Merci beaucoup pour ton retour, je regarde ça et je reviens vers toi ! Mon week-end est assez chargé

En tout cas, merci 1000 beaucoup


Re !

Je viens de tester, j'ai dû réparer le fichier facturation puis maintenant ça marche nickel !!

Saurais-tu m'expliquer pourquoi avant la macro m'était le classeur "facturation" en erreur ?

Je vais essayer maintenant d'enlever le doublon sur le fichier facturation, ou de ne copier que les lignes qui n'existent pas déjà . C'est puissant le VBA, pas toujours évident mais puissant ! 8) .

Encore merci, à bientôt !

Saurais-tu m'expliquer pourquoi avant la macro m'était le classeur "facturation" en erreur ?

Je n'en sais rien ! Je ne l'ai vu qu'après réparation et difficile de savoir ce qui a pu se passer avant...

Il me semble que pour éviter les doublons en facturation, il faudrait (si tu conserves la ligne dans Planning) recoder la colonne Terminé : tu as Y pour envoyer en facturation, N pour pas prêt à envoyer, un code pour déjà envoyé éviterait d'envoyer 2 fois, et il peut être mis par la macro qui fait l'envoi en facturation...

Cordialement.

Bonsoir,

Merci beaucoup pour ton retour,

C'est une très bonne idée, après avoir copié la ligne, je modifie la case pour que "Y" devienne "déja facturé" c'est très efficace et beaucoup moins compliqué que de supprimer les doublons.

Merci encore et a bientôt !

Maxime.


Bonsoir,

Merci beaucoup pour ton retour,

C'est une très bonne idée, après avoir copié la ligne, je modifie la case pour que "Y" devienne "déja facturé" c'est très efficace et beaucoup moins compliqué que de supprimer les doublons.

Merci encore et a bientôt !

Maxime.

Rechercher des sujets similaires à "reparation utilisation macro"