Macro Excel pour formulaire

Je pensais pas que ça aurait posé problème...

Je vais essayé avec son tutoriel, le fichier n'est plus aussi fluide qu'avant, vous savez pour quoi ?

Je vais essayé avec son tutoriel, le fichier n'est plus aussi fluide qu'avant, vous savez pour quoi ?

Aucune idée. Vous avez modifié quoi dans le fichier

Aucune idée, j'ai juste rajouté le code pour le message d'avertissement.

Mais quand on tape dans les cases, on voit qu'il y a une latence.

Cf. le fichier excel

Non c'est très fluide chez moi. Pensez à fermer excel et refaite un test

Par contre, dans le code BoutonEnregistrer, tout au départ du code, rajoutez cette ligne

If Sheets("Ajouter une nouvelle affaire").Range("E10") = "" Then MsgBox "Le numéro d'affaire n'est pas mentionné !": Exit Sub

Cela oblige l'utilisateur à mettre le numéro d'affaire car celui ci est repris dans le nom de la feuille créée pour l'affaire.

Edit :

dans la macro Private Workbook_SheetSelectionChange qui se trouve dans Thisworkbook vous pouvez éventuellement rajouter cette instruction juste en dessous de If Target... --> Application.ScreenUpdating = False
Ensuite à la fin du code juste au dessue de END SUB mettre ceci --> Application.ScreenUpdating = True

Ok je vais faire ça c'est bizarre.

Si un numéro d'affaire existe déjà, est-ce possible de mettre aussi un message qui empêche la création ? pour pas qu'il y est de conflit.

Merci Dan

Edit :

Il sert à quoi : " Application.ScreenUpdating = False " ?

Si un numéro d'affaire existe déjà, est-ce possible de mettre aussi un message qui empêche la création ? pour pas qu'il y est de conflit.

Dans le code BoutonEnregistrer, au début du code, rajoutez cette ligne juste en dessous de With Sheets("Liste des affaires")

    On Error Resume Next
    lig = .Range("D:D").Find(Range("E10"), LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    If lig > 0 Then
        MsgBox "Le numéro d'affaire existe déjà !. Veuillez choisir une autre référence": Exit Sub
    End If
    On Error GoTo 0

il sert à quoi: " Application.ScreenUpdating = False " ?

Quand une macro est exécuter vous pouvez voir un "petit saut" (ou rafraichissement) d'écran. En désactivant ce rafraîchissement avant l'exécution de la macro, cela va accélérer le code. Mais une fois terminé, il faut réactiver en mettant la valeur à TRUE.

D'accord je comprend mieux.

Super le code fonctionne aussi très bien, je pense qu'il ne peux plus avoir de fail maintenant.

Dan, désoler de te déranger.

Quand une affaire est finaliser, elle se supprime et elle passe en vert automatiquement.

Sauf que quand je double clique dessus ça met une erreur de débogage, est-il possible de mettre simplement un message automatique en précisant que l'affaire est finaliser et que nous pouvons donc plus voir le détail ?

Merci d'avance, bonne soirée.

erreur

Bonjour,

Oui c'est un cas qui n'avait pas été considéré mais plus simple résoudre une fois le fichier finalisé. Dans la feuille Liste des affaires, remplacez le code Private Sub Worksheet_BeforeDoubleClick par celui ci-dessous

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Interior.Color <> Vert Then
    Cancel = False
    With Sheets("Affaire-" & Range("D" & Target.Row))
        .Visible = 1
        .Activate
    End With
Else:
    MsgBox "Plus de détails disponible. Cette affaire est finalisée", vbOKOnly, "Attention !"
End If
Cancel = True
End Sub

Merci beaucoup Dan pour ton aide dans mon projet ...

Super fonctionnel !

Pas de soucis.

Ce fut avec plaisir surtout que le fichier a bien été pensé. Dommage que je ne savais pas pour le placement sue Googlesheet...

Là vous devez peut -être envisager les deux cas. Fonctionnement en local ou sur googlesheet.

Cordialement

Franchement c'était top, une bonne collaboration.

Oui mais ce n'est pas grave, c'est pour ça que j'ai réalisé un autre topic.

Au pire des cas ça sera du local (nous avons un serveur dédié) mais le top aurait été sur Google Sheet directement pour pouvoir le visionné même à distance sans connexion au NAS.

On verra bien si nous y arrivons, sinon ça ne sera pas si grave le principal est que le fichier est hyper fiable, niveau sécurité je pense qu'il ne peut pas avoir de bug.

Le seul petit point est que chez moi il y a une petite latence sur le fichier, je vois qu'il est pas fluide pourtant j'ai un ordinateur au top mais je pense que c'est peut-être mon Excel.

Pour le ralenti on peut éventuellement regarder mais il faudrait savoir à quel moment cela est constaté dans le processus

C'est surtout lors des saisis de textes, mais si on arrive à le passer dans Google Sheet nous aurons peut-être plus ce soucis je pense ?

Essayez un peu ceci --> Dans la macro Private Workbook_SheetSelectionChange qui se trouve dans Thisworkbook, déplacez l'instruction Application.ScreenUpdating = False juste avant le If Target.count

C'est exactement pareil pour le coups

Bonjour Dan, comment allez-vous ?

Nous avons réfléchi avec mon équipe et nous souhaiterions que quand l'affaire se finalise, elle ne se supprime pas.

Que la ligne de l'affaire devienne verte, que le double clique vers l'affaire en question fonctionne toujours.

Pour éviter que le fichier soit trop lourd, nous en prendrons 1 par an.

Comment je pourrais faire pour supprimé ça ? Car je ne veux pas en supprimer trop pour créer un dysfonctionnement ... Merci DAN!

Bonsoir

Alors ce n'est pas compliqué. Faites ceci :

- Click droite sur l"onglet Liste des affaires
- choisissez l'option "Visualiser le code"
- dans la macro Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ,mettez une apostrophe devant les 4 lignes suivantes :

---> If target
---> Else
---> Msgbox
---> End if

ne les supprimer pas, on ne sait jamais que vous voudriez revenir en arrière

Cordialement

Je l'ai fais sauf que quand je finalise une affaire, et que je veux quand même regarder l'onglet de l'affaire, il n'ouvre plus l'affaire ... Merci

Ok. Logique car la feuille de l'affaire est supprimée

Dans la macro Sub BoutonAffaireTerminer(), désactivez aussi ces trois lignes

Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True 

Aussi plus haut vous pouvez supprimer le .hyperlink. il ne sert plus dans le fichier et j'avais omis de l'enlever

Cordialement

Rechercher des sujets similaires à "macro formulaire"