Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 filtrer / défiltrer insertion de ligne automatique - macro qui ne fonctionne pas ou de manière aléatoire

Grelune

XLDnaute Nouveau
Bonjour,

Je suis un peu désemparée..
Je suis déjà venue poser une question sur ce forum et un membre de ce forum m'a gentiment dépanné. Je reviens donc.
Cela fait une semaine que je suis sur ce fichier tout fonctionne sauf cette macro qui me donne un résultat qui me semble assez aléatoire... j'ai tout relu, fait fonctionner pas à pas, essayé de modifier des détails de ma formule mais sans succès

Le but est :
Quand une personne insère une commande dans la feuille "Tableau Ca" automatiquement la feuille planning affiche toutes ces lignes et recopie les formules de la dernières lignes non vide afin de reconnaitre la dernière commande insérer. (si la commande n'a pas de "oui" dans la case étude c'est un 0 qui s'affichera et la case sera verte dû à la MFC que j'ai mise)

A savoir que je suis obligée de défiltrer car je souhaiterais qu'en temps normal ma feuille "planning" filtrent et n'affichent que les commandes qui ont un "oui" dans la case étude de la feuille du "Tableau CA".

Je vous joint mon code avec les explications et mon fichier excel sachant qu'aujourd'hui je n'arrive pas à comprendre pourquoi mon code marche une fois puis il s'arrête. Il me semble que c'est lié au fait que la commande ne soit pas en étude. Ce que je ne comprends pas car en défiltrant sur la feuille "planning" il devrait bien m'afficher toutes les commandes même celles qui affichent et un zéro et recopier la dernière ligne.
VB:
Sub inse()
    Dim dlign_tableau_ca As Long 'dernière ligne non vide du tablleau de la feuille CA prévisionnel
    Dim dlign_planning As Long 'dernière ligne non vide du tablleau de la feuille planning


    dlign_tableau_ca = Sheets("Tableau CA Prévisionnel").Range("A7").End(xlDown).Row
    dlign_planning = Sheets("Planning").Range("A9").End(xlDown).Row

    Sheets("Tableau CA Prévisionnel").Rows(dlign_tableau_ca & ":" & dlign_tableau_ca).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("a" & dlign_tableau_ca).Value = "xxx"
    Sheets("Planning").Select
    Range("B9").Select
    ActiveSheet.Range("$A$1:$CFT$14").AutoFilter Field:=2, Operator:= _
        xlFilterNoFill 'je préfiltre juste le début afin de pouvoir tout défiltrer par la suite
    Selection.AutoFilter ' je défiltre afin que tous les données soient affichées avant j'utilisais ActiveSheet.ShowAllData
Application.EnableEvents = False 'j'empeche qu'il aille me chercher la sub de planning
    Range("A" & dlign_planning & ":H" & dlign_planning).Select ' je selectionne la dernière ligne non vide
    
    Selection.AutoFill Destination:=Range("A" & dlign_planning & ":H" & dlign_planning + 1), Type:=xlFillDefault
    Range("A" & dlign_planning & ":H" & dlign_planning + 1).Select 'je la recopie une ligne en dessous

' ca c'est la macro que j'ai enregistré pour m'en servir de model
    'Rows("11:11").Select
    'Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    'Sheets("Planning").Select
    'Selection.AutoFilter
    'Range("A14:C14").Select
    'Selection.AutoFill Destination:=Range("A14:C15"), Type:=xlFillDefault
    'Range("A14:C15").Select
    Call COCO 'sub pour refiltrer les commandes de la fuille planning'
Application.EnableEvents = True
    Sheets("Tableau CA Prévisionnel").Select
End Sub
Si une âme charitable pouvait m'aider ce fichier devant être opérationnelle demain soir... Et j'ai environ 300 commandes à insérer.

Je vous remercie
 

Pièces jointes

  • Model Tab.xlsm
    173.4 KB · Affichages: 10

vgendron

XLDnaute Barbatruc
Hello

J'ai modifié ta macro d'insertion de commande
1) la table a été renommée "Tablo_CA"
2) comme il s'agit d'une table structurée.. (en VBA: Listobjects.....) on en profite pour utiliser les commandes associées: ListObject.Row.add.... databodyrange....

les formules dans le planning A10:H10 me semblent bizarre... elles sont censées récupérer quoi?
en A1 et B1 et... il semble y avoir des zones de validation pour filtrer??
ta macro Coco semble faire et defaire sur une zone qui ne semble correspondre à rien..??
 

Pièces jointes

  • Model Tab.xlsm
    154.7 KB · Affichages: 2

Grelune

XLDnaute Nouveau
Wahou merci pour la rapidité !

Alors je ne connaissais pas les spécificités de la table structurée je vais me renseigner.

- les formules de A10:C10 me permettent de récupérer les données du tableau dans commande ce pourquoi et suivant l'information récupérer ma MFC modifie le contenu

- il n'y a rien dans les cases D10:H10 je souhaite juste que la mise en forme soit copier

- Effectivement je ne comprends pas la ligne 1 ce pourquoi je l'avais masquer en fait quand je mettais le filtre dans la ligne 9 ou 10 elle m'affichait les flèches du filtre dans la ligne 1...

- Oui pour coco effectivement je commençais par filtrer une petite partie pour pouvoir faire afficher toute les data car sinon quand toutes les datas étaient affichées ma macro ne fonctionnait plus


Mais ce que vous m'avez renvoyé semble bien fonctionner je vais faire pleins de tests pour vérifier. Je vous remercie.
 

vgendron

XLDnaute Barbatruc
Dans la PJ
Feuille Tableau_CA_Prévisionnel
Bouton "Inserer Commande" permet d'ajouter une ligne dans le tableau et tire la formule dans la feuille Planning colonnes A:C
tu peux ensuite remplir les infos du nouveau client==> remplacer le xxxx, numro de dossier;....

ensuite, tu vas dans la feuille Planning
tu peux remplir les dates des colonnes D:H de la nouvelle ligne
bouton "Mise à jour des Commandes pour mettre à jour le planning (il n'y a plus de formules.. beaucoup trop lourd)
bouton "100%" permet de filtrer les lignes dont le pourcentage est à 100%
le bouton change alors de nom "ShowAll" qui permet à nouveau de reafficher toutes les lignes
 

Pièces jointes

  • Model Tab.xlsm
    235.8 KB · Affichages: 4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…