Modification d'une macro

Bonjour à tous,

Je reviens vers vous après avoir reçu une grande aide sur ce forum pour des tableaux que je voulais créer. Aujourd'hui je veux les améliorer et j'espère que quelqu'un pourra m'aider.

Ayant des connaissances de débutant en macro, j'ai besoin d’aide pour modifier la macro déjà implanté dans le fichier .

Fichier : CA 2020

Ce fichier est constitué de plusieurs feuilles contenant 2 tableaux dans chacune des feuilles.

Ce sont les éléments des tableaux « VENTES » présents dans les feuilles « CA-JANVIER, CA-FEVRIER, CA-MARS, etc.. jusqu'à CA-DECEMBRE » (allant des colonnes B à Y) qui m'intéresse.

Suite à des modifications de ses tableaux (ajout de colonne), l'ensemble des éléments des tableaux "VENTES" n'apparaissent plus de manière ordonnée dans le tableau de la feuille « SUIVI DES FACTURES CLTS ».Est-il possible de modifier la macro afin que les informations souhaitées apparaissent ?

Ce tableau doit être la copie de tous les éléments des tableaux « VENTES » présents dans les feuilles « CA-JANVIER, CA-FEVRIER, CA-MARS, etc.. jusqu'à CA-DECEMBRE » (allant des colonnes B à Y).

Contrainte :

- Seules les lignes ne comportant aucunes informations dans la colonne U (date de paiement) doivent apparaitre dans le tableau dans la feuille « SUIVI DES FACTURES CLTS» (l'ancienne macro le fait mais elle prend en compte la mauvaise colonne)

- Est-il possible que les factures apparaissant dans le tableau « SUIVI DES FACTURES CLTS» soient regroupées s'ils ont le même nom client ? (Nom dans la colonne D) et ranger par date de la plus ancienne à la plus récent

- Est-il également possible de pouvoir rajouté des informations directement dans le tableau « SUIVI DES FACTURES CLTS ».

Par exemple : une ligne de facture apparait dans le tableau « SUIVI DES FACTURES CLTS » si la date de paiement (colonne U) n'est pas rempli. Es-il possible de pouvoir inscrire cette information directement dans le tableau de « SUIVI DES FACTURES CLTS » qui provoquera la disparition de la ligne du tableau après la mise à jour sans devoir aller dans le tableau de départ ?

- De plus, pouvez-vous me donner une solution pour pouvoir fixer la formule « somme » sur les informations apparaissant dans le tableau « SUIVI DES FACTURES CLTS ».

J'ai mis une maquette du visuel final du tableau souhaité dans la feuille « MAQUETTE » pour peut être aider à comprendre ce que je cherche à faire.

Je vous remercie d'avance

Cordialement

Bonjour Apprenti,

Pour moi, rien ne va ! c'est un truc à s'enquiquiner pendant longtemps.

  • pourquoi un onglet par mois ? pourquoi pas un seul onglet
  • pourquoi ls tableaux des onglets sont pas sous une forme structurée ? ce qui éviterait de devoir revoir la macro quand on ajoute une colonne
  • dans la maquette =SOMME(N35:N40) tombe dans un vide sidéral
  • pour la formule SOMME, il faudrait savoir ce que tu souhaites car ici il est indiqué =SOMME(#REF!)
  • il serait préférable de faire la récap sous forme de tableau structuré et calculer la somme avec un TCD
  • "Est-il également possible de pouvoir rajouté des informations directement dans le tableau « SUIVI DES FACTURES CLTS »." >> c'est toujours possible de faire ce que tu demandes mais ce n'est pas très sain s'il fallait répercuter l'information dans les onglets de base (sinon lors de la prochaine sélection de l'onglet elle réapparaitra sans cette info ajoutée), il faudrait donc modifier n conséquence le tableau d'origine et cela plaide aussi en faveur d'une structuration des tableaux

De façon pragmatique, pour la somme, comme tu commences par supprimer les lignes à partir de la 8ème tu supprimes du même coup la plage appelée dans la formule !

Tu peux faire ceci

=SOMME(DECALER($M$7;1;;NBVAL($M:$M)-1))

DECALER va définir la plage comme allant de la cellule en dessous de M7 pour une hauteur égale au nombre de cellules renseignées moins l'en-tête.

A condition que

  1. toutes les lignes aient des valeurs, sinon on adoptera une autre formule
  2. qu'il n'y ait pas d'erreurs dans ces valeurs, ce qui est justement le cas aussi en Juillet ligne 34

Pour ta macro, il suffisait sans doute de modifier ceci

If .Range("U" & k) = "" Then

Bonjour Steelson,

Je te remercie grandement pour tes réponses ça a réglé une grande partie de mes problèmes surtout pour la formule "somme". Pour la macro j'ai pu comprendre pourquoi les modifications que j'apportais ne fonctionnais pas.

Pour répondre à tes questions:

  • pourquoi un onglet par mois ? pourquoi pas un seul onglet
Le but est d'avoir rapidement une vision mensuel global. Je suis consciente qu'il existe différents outils pour avoir ce résultat d'analyse plus simplement mais ce fichier est destiné à une personne réfractaire à mettre ses données sur internet et ayant de faible moyen financier.
  • pourquoi ls tableaux des onglets sont pas sous une forme structurée ? ce qui éviterait de devoir revoir la macro quand on ajoute une colonne
C'est à dire?

De plus est-il possible de modifier la macro pour que les lignes ayant le même nom "CLIENTS" soit regroupé dans le tableau de la feuille "SUIVI DES FACTURES CLTS"?

Cordialement

De plus est-il possible de modifier la macro pour que les lignes ayant le même nom "CLIENTS" soit regroupé dans le tableau de la feuille "SUIVI DES FACTURES CLTS"?

Cordialement

Ajoute ceci à la fin de la macro (obtenu par apprentissage de macro)

    ActiveWorkbook.Worksheets("SUIVI DES FACTURES CLTS").AutoFilter.Sort.SortFields _
        .Clear
    ActiveWorkbook.Worksheets("SUIVI DES FACTURES CLTS").AutoFilter.Sort.SortFields _
        .Add Key:=Range("D8"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("SUIVI DES FACTURES CLTS").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
En rajoutant le codage le fichier me donne un message d'erreur

bug excel 1 bug excel 2

De plus est-il possible de modifier la macro pour que les lignes ayant le même nom "CLIENTS" soit regroupé dans le tableau de la feuille "SUIVI DES FACTURES CLTS"?

Cordialement

Ajoute ceci à la fin de la macro (obtenu par apprentissage de macro)

A la fin de la macro !

Option Explicit

Private Sub Worksheet_Activate()
    Dim i As Integer, k As Integer, Prochaine_ligne As Integer

    Application.ScreenUpdating = False
    Rows("8:" & Rows.Count).Delete

    For i = 1 To Sheets.Count
        If Left(Sheets(i).Name, 5) <> "CA - " Then GoTo Etiquette
        With Sheets(i)
            For k = 9 To .Range("B" & Rows.Count).End(xlUp).Row ' Toutes les lignes
                If .Range("U" & k) = "" Then
                    Prochaine_ligne = Range("B" & Rows.Count).End(xlUp).Row + 1
                    .Range("B" & k & ":N" & k).Copy Range("B" & Prochaine_ligne)
                    Range("S" & Prochaine_ligne) = Sheets(i).Name
                End If
            Next k
        End With
Etiquette:
    Next i

    MsgBox "Mise à jour effectuée !"

    ActiveWorkbook.Worksheets("SUIVI DES FACTURES CLTS").AutoFilter.Sort.SortFields _
        .Clear
    ActiveWorkbook.Worksheets("SUIVI DES FACTURES CLTS").AutoFilter.Sort.SortFields _
        .Add Key:=Range("D8"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("SUIVI DES FACTURES CLTS").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

Le problème persiste

bug excel 3

avec le fichier que je t'ai envoyé ? chez moi cela fonctionne !

edit ... je n'avais pas envoyé de fichier, je vais le refaire un peu plus tard

retrouvé

merci beaucoup pour votre aide.

Dernière question j'essaye de copier des données d'un fichier1 à un fichier2 en utilisant c code

Workbooks("ca-annee-2020-amc-v3.xls").Worksheets("CA-JANVIER").range("B9:Y55").copy _
Workbooks("classeur2.xls").Worksheets("feuil2").range("B9")

Mais cela ne passe pas. Comme se sont des éléments d'un tableau comportant des formules est-il possible que ça en soit la cause?

la syntaxe n'est pas bonne

__________.copy destination:=_________________

si ce n'est pas la cause, il faudrait voir les fichiers

crée un nouveau post pour ne pas tout mélanger

Ok merci encore.

Rechercher des sujets similaires à "modification macro"