Création d'un formulaire

Il est plus simple que je vous poste le code dans un fichier dont le poids est plus léger.

Allez dans le Module 1 de votre fichier et remplacez tous les codes (Fiche relance, recherche et Trier) par ceux que j'ai placés dans le fichier ci-joint

17relance.xlsm (15.81 Ko)

Avec ce code, ça me créer une fiche de relance par pièce.

Dans la macro TRIER, juste en dessous du l'instruction .clear, ajoutez cette ligne et refaite un test

 .Add Key:=Range("T_Bdd[Type Bateau]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

Toujours le même problème.

Il n'y a rien qui s'affiche en H4, c'est normal ?

Il n'y a rien qui s'affiche en H4, c'est normal ?

Lorsque j'exécute le code, j'ai une donnée en H4 pour chaque Fiche relance. La colonne Type Bateau en feuille BDD est bien en colonne D ?

Une chose à faire dans le code Fiche Relance, en dessous juste après le End Select -> enlevez l'apostrophe devant l'instruction ref = ""

Pour un même matériau (sur les 4 dernières valeurs), Images de ce que j'ai en changeant CA21 par CA40 en cellule D12 et D13

presse papier02 presse papier01 presse papier03

Ahhhh c'est bon ça fonctionne. C'est car je n'avait pas rajouté le titre "Type Bateau" en H3.. :)

Thank's c'est parfait comme ça 😁

Bonjour Dan,

Nouveau bug dans le fichier.

Vous pouvez trouver ci-joint le fichier avec les 4 fiches de relance. Comme vous pouvez le voir, la deuxième et la 4ème fiche de relance sont du même bateau, même matériau, même épaisseur, même coloris.. Les 2 feuilles devraient normalement être fusionnées.

C'est en relançant les pièces du rectangle gras dans BDD qu'il est arrivé. A mon avis, le code à bugé car il y a eu une pièce en coloris "clair" avec les "foncé".

Je vous laisse regarder.

A+

12relance.zip (432.63 Ko)

Bonjour

Nouveau bug dans le fichier.

Vous pouvez trouver ci-joint le fichier avec les 4 fiches de relance. Comme vous pouvez le voir, la deuxième et la 4ème fiche de relance sont du même bateau, même matériau, même épaisseur, même coloris.. Les 2 feuilles devraient normalement être fusionnées.

Hum.. c'est pas un bug à proprement parler. Puis, rappelez vous quand je vous avais écrit que cela poserait probablement des soucis.

- En premier, juste pour garder l'ancien code sous le coude dans un autre module de votre fichier, désactivez le code actuel dans votre fichier ou donnez lui un autre nom (genre Fiche_relance-Old)
- Collez le code ci-dessous :

Sub Fiche_relance()
Dim cel As Range
Dim ShFr As Worksheet
Dim i As Byte, j As Byte, k As Byte, sh As Byte
Dim ref As String
Dim Existe As Boolean

Call Trier

Application.ScreenUpdating = False
Set ShFr = Worksheets("Fiche_relance")
k = 1
For sh = 1 To Sheets.Count
    If Left(Sheets(sh).Name, 8) = "FR" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") Then k = k + 1
Next sh
With Worksheets("BDD")

    For Each cel In .ListObjects("T_Bdd").ListColumns(19).DataBodyRange
        Select Case cel.Value
            Case Is = "": Exit For
            Case Is = "Oui"
                If cel.Interior.ColorIndex <> 3 Then
                    If cel.Value = "Oui" Then
                        For sh = 1 To Sheets.Count
                            ref = Sheets(sh).Cells(4, 8) & Sheets(sh).Cells(3, 3) & Sheets(sh).Cells(4, 3) & Sheets(sh).Cells(3, 6)
                            If Sheets(sh).Name Like "FR_*" And cel.Offset(0, -15) & cel.Offset(0, -9) & cel.Offset(0, -8) & cel.Offset(0, -13) = ref Then
                            Existe = 1: Exit For
                            End If
                        Next sh
                        Select Case Existe
                            Case Is = 0
                                Sheets("Fiche_relance").Copy After:=Sheets(Sheets.Count)
                                Set ShFr = ActiveSheet
                                ShFr.Name = "FR" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "_" & k
                                k = k + 1
                                i = 3
                                j = 7
                                ShFr.Cells(3, i) = cel.Offset(0, -9) 'Materiau
                                ShFr.Cells(4, i) = cel.Offset(0, -8) 'Epaisseur
                                ShFr.Cells(3, i + 3) = cel.Offset(0, -13) 'Coloris
                                ShFr.Cells(4, i + 3) = Now 'Date
                                ShFr.Cells(4, i + 5) = cel.Offset(0, -15) 'type bateau
                            Case Is = 1
                                Set ShFr = Sheets(sh)
                                j = ShFr.Range("A" & Rows.Count).End(xlUp).Row + 1
                            End Select

                                ShFr.Range("A" & j) = cel.Offset(0, -16) 'Bateau
                                ShFr.Range("B" & j) = cel.Offset(0, -12) 'Meuble
                                ShFr.Range("C" & j) = cel.Offset(0, -11) 'Identification
                                ShFr.Range("D" & j) = cel.Offset(0, -7) 'Long
                                ShFr.Range("E" & j) = cel.Offset(0, -6) 'Larg
                                ShFr.Range("F" & j) = cel.Offset(0, -10) 'qte
                                ShFr.Range("G" & j) = cel.Offset(0, -5) 'flux
                                ShFr.Range("H" & j) = cel.Offset(0, -3) 'Motif relance
                                ShFr.Range("I" & j) = cel.Offset(0, -1) 'Commentaire

                    ElseIf ShFr.Cells(3, i) <> "" And ShFr.Cells(4, i + 5) = cel.Offset(0, -15) And ShFr.Cells(3, i) = cel.Offset(0, -9) And _
                        ShFr.Cells(4, i) = cel.Offset(0, -8) And ShFr.Cells(3, i + 3) = cel.Offset(0, -13) Then
                        j = j + 1
                        ShFr.Range("A" & j) = cel.Offset(0, -16) 'Bateau
                        ShFr.Range("B" & j) = cel.Offset(0, -12) 'Meuble
                        ShFr.Range("C" & j) = cel.Offset(0, -11) 'Identification
                        ShFr.Range("D" & j) = cel.Offset(0, -7) 'Long
                        ShFr.Range("E" & j) = cel.Offset(0, -6) 'Larg
                        ShFr.Range("F" & j) = cel.Offset(0, -10) 'qte
                        ShFr.Range("G" & j) = cel.Offset(0, -5) 'flux
                        ShFr.Range("H" & j) = cel.Offset(0, -3) 'Motif relance
                        ShFr.Range("I" & j) = cel.Offset(0, -1) 'Commentaire
                    End If
                    cel.Interior.ColorIndex = 3 'ajout couleur rouge
                    Call Recherche(ShFr, i) 'recherche bateau urgent
                End If
        End Select
        ref = ""
        Existe = 0
    Next cel
    .Range("T_BDD").Sort Key1:=Range("T_BDD[Date]"), Header:=xlYes, Order1:=xlAscending 'tri pour remettre BDD par date
End With
Application.ScreenUpdating = True
End Sub

Désolé c'est un peu long
A noter que dans votre fichier posté il y a un message à l'ouverture du fichier au sujet d'un fichier Export Total.xlsx

Cordialement

Bonjour,

Oui je m'en rappel.

Ca fonctionne ! Niquel merci

Pas de soucie pour le temps, et le fichier Export Total c'est parce que mon onglet BDDCA21 est connecté à un fichier nommé Export total sur mon serveur.

Crdl

Bonjour Dan,

J'ai un bug sur le fichier de relance que je n'arrive pas à résoudre. Pourriez-vous m'aider svp ? Lorsque j'enregistre le formulaire, il me met un pop up "L'indice n'appartient pas à la sélection". Je ne comprends pas..

Je met le fichier en PJ

Merci

Bonjour,

Normal si vous changez des choses ....

- Dans le menu excel, allez dans gestionnaire de noms
- sélectionnez le nom T_BDD13
- Cliquez sur Modifier
- Dans la rubrique Nom, supprimez le 13

Aussi dans votre feuille LISTE, il y a un i dans Marquies1
Attention à l'ouverture du fichier, un lien est mentionné avec un fichier Total qui vient d'un serveur S:\affaire....

Cordialement

Okay en effet, je ne sait pas d'où vient la modif... surement une faute de frappe. Merci !

Bonjour Dan,

Je reviens vers vous car j'ai de nouveau un soucie sur le fichier. J'ai copier/coller le fichier pour le mettre en place pour un nouveau client. J'ai cherché dans le code mais je n'ai pas trouvé l'endroit qui permet de rassemblé les relances dans la même fiche de relance lorsqu'elles ont le même matériaux/épaisseur/colori. Mon problème est que je valide mes relances, ça créer une fiche de relance par pièce, et non par matériaux/épaisseur/colori. Je me souviens que vous m'aviez dit que c'était une zone sensible du codage. Ce doit surement être un décalage de colonne car j'ai supprimé une colonne de T_bdd pour ce client là (j'ai fait la modif sur les autres codes). Egalement, la formule pour calculer les coûts de fonctionne plus.

Je vous met l'exemple en PJ.

Merci d'avance pour cette aide ci-précieuse

Bonjour. J'ai trouvé ou débloquer le code

Cordialement

Bonjour

Ok tant mieux.
Pour info et assez bizarrement, la colonne A dans la feuille BDDB048 est masquée et ne contient pas de données

Cordialement

Bonjour,

Oui je sais, je l'ai fait exprès pour ne pas avoir à modifier tout le code. C'est parce que j'ai une colonne de moins dans cette base de donnée comparé aux anciennes :) J'ai donc eu à modifier le code uniquement pour les colonnes B & C.

Existe-il une technique particulière (codage ou non) pour ne pas alourdir de trop le fichier ? J'ai peur qu'il se mette un beuger dans quelques mois

Cordialement

Bonjour

C'est parce que j'ai une colonne de moins dans cette base de donnée comparé aux anciennes :)

Vous auriez mieux fait de la masquer plutot que de la supprimer. Cela a un impact sur tout le fichier et le code

Existe-il une technique particulière (codage ou non) pour ne pas alourdir de trop le fichier ?

Ce n'est pas le code qui alourdit le fichier ce sont les données que vous mettez dedans et le nombre de feuilles ou objets que vous utilisez.

Plus vous utilisez VBA avec excel plus vous allez vers une "usine à gaz" et cela devient ingérable si vous devez modifier quelque chose.
Donc évitez de changer et de mettre trop de conditions pour ne pas compliquer. Le cas échéant vous pourriez être contraint de tout refaire

Cordialement

Okay

Oui pour ne pas trop l'alourdir j'ai préféré copier le fichier et faire 2 fichiers différents (un pour chaque client) sinon il y aurai 4 bdd dans le même fichier. Je vide BDD tous les mois de façon à ne pas avoir trop de ligne pour justement ne pas trop l'alourdir.

Cordialement

Bonjour et bonne année !!

Je rencontre un problème lors de la création de la fiche de relance. J'ai remarqué que le problème apparaît uniquement lorsque je veux valider les relances pour le CA40. Le code s'arrête avant de réaliser les filtres, je ne comprend pas pourquoi.

Décidément l'année commence bien.... 😂😂

Bonjour Dan, êtes-vous toujours disponible pour m'aider ? J'ai une modif à réaliser sur le fichier de relance.

Afin de pouvoir programmer facilement tous nos usinages par rapport aux pièces relancées, il nous faut un fichier CSV. J'ai besoin de créer une macro où lorsque que l'on clique sur "VALIDATION DES RELANCES", ça réalise les mêmes fiches de relance qu'avant. Mais en parallèle, ça vient :

-> créer un nouvel onglet (ou copier un onglet caché)

-> Lister toutes les pièces relancées présentes sur les fiches de relance.

-> Enregistrer sous uniquement l'onglet en question en format CSV à un chemin imposé. Le nom du fichier CSV dois s'enregistrer avec un nom différent à chaque fois.

C'est possible de réaliser tout ça ?

Cordialement,

Maxime

Rechercher des sujets similaires à "creation formulaire"