Macro Excel pour formulaire

Bonjour à tous !

Je suis nouveau sur ce forum, je souhaiterais avoir de l'aide si possible pour la création d'un fichier pour mon entreprise du bâtiment.

J'ai créer un fichier Excel permettant d'accéder à un onglet "Liste des affaires", un onglet "Créer une nouvelle affaire", un onglet "Détail de l'affaire".

Je souhaiterais que les informations saisies dans "Créer une nouvelle affaire" me créer une liste en allant avec les informations saisies dans dans celle-ci.

Puis sur la ligne de ma nouvelle affaire dans liste des affaires, je souhaiterais dupliquer avec un hyperlien l'onglet "Détail de l'affaire" afin d'avoir des détails pour chacun des affaires.

Le soucis c'est qu'à chaque fois j'ai des erreurs qui se créer et mes lignes se confondent dans ma liste d'affaire ...

Je met mon fichier en PJ pour que vous puissiez voir plus simplement de quoi je parle ...

Merci d'avance aux personnes qui prendront le temps de me répondre, à très vite !

Cordialement,

Bonjour

Joli fichier ...

Vous voulez que la dernière affaire soit toujours en ligne 7 ?

Au fait quelle est votre version excel

Cordialement

Merci pour votre réponse.

C'est mon premier fichier Excel avec le 2016.

En faite je voudrais que je chaque affaire ce mette à la suite quand j'en créer une nouvelle et qu'en parallèle ca me duplique pour chaque affaire l'onglet Affaire avec le nom de l'affaire en haut pour que je puisse voir ou j'en suis pour chacune.

En ayant automatiquement un lien hypertexte dans la liste des affaires vers le détail de l'affaire en question.

Suis-je clair ? Merci beaucoup car la je bloque...

Changer votre macro Enregistrer par celle ci-dessous

Sub BoutonEnregistrer()
'
' BoutonEnregistrer Macro

With Sheets("Liste des affaires")
    .Rows("7:7").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    With .Range("B7:H7").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With .Range("B7:H7")
        .BorderAround LineStyle = xlContinuous
        .BorderAround ColorIndex:=2
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With
    With .Range("B7:H7").Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ThemeColor = 1
        .TintAndShade = 0
        .Weight = xlThin
    End With

    .Range("B7") = Sheets("Ajouter une nouvelle affaire").Range("E7").Value
    .Range("C7") = Sheets("Ajouter une nouvelle affaire").Range("H7").Value
    .Range("D7") = Sheets("Ajouter une nouvelle affaire").Range("E10").Value
    .Range("E7") = Sheets("Ajouter une nouvelle affaire").Range("H10").Value
    .Range("F7") = Sheets("Ajouter une nouvelle affaire").Range("E13").Value
    .Range("G7") = Sheets("Ajouter une nouvelle affaire").Range("H13").Value
    .Range("H7") = Sheets("Ajouter une nouvelle affaire").Range("E16").Value

End With

Sheets("Ajouter une nouvelle affaire").Range("E16,H13,E13,H10,E10,H7,E7").ClearContents

Sheets("Affaire").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Range("H2").Value = Sheets("Liste des affaires").Range("C7").Value

With Sheets("Liste des affaires")
    .Range("B7:H7").Hyperlinks.Add Anchor:=.Range("B7"), Address:="", SubAddress:=ActiveSheet.Name & "!A1", TextToDisplay:="INEO"
    With .Range("B7").Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
End With
End Sub

Ca fonctionne par contre j'ai plusieurs soucis :

- J'aimerais que l'hypertexte soit mit sur tous les textes de la ligne

- Quand je créer une affaire le nom du client reste toujours en "INEO"

- Quand je modifie le statut "En cours" ou "A faire" il se trompe de ligne

- Quand je créer mon affaire, il duplique la page, est-ce que c'est possible de la nommer (Affaire - "Numero d'affaire") ?

- Quand je créer mon affaire, est-il possible d'atterrir sur la page liste des affaires automatiquement ?

Merci d'avance pour votre retour, c'est super sympa de prendre votre temps et pour le coups ça me donne un bon coups de main ! :) MERCI !

- J'aimerais que l'hypertexte soit mit sur tous les textes de la ligne

Derrière ANCHOR --> changez Range("B7") par range("B7:H7"). Attention ne pas supprimer le point devant Range

- Quand je créer une affaire le nom du client reste toujours en "INEO"

C'est ce qui était dans votre code. Vous voulez quoi ?

- Quand je modifie le statut "En cours" ou "A faire" il se trompe de ligne

C'est sur un autre code. Donc cela reste à faire

- Je voudrais que le client soit celui-rentré dans le formulaire de création d'affaire

- Je voudrais que quand je passe une affaire en "En cours", la ligne de l'affaire devient ORANGE dans la liste d'affaire et qu'un texte "En cours" apparaissent dans la dernière colonne pour que je puisse filtrer.

- Par contre pourquoi quand je clique sur l'hyperlien de l'affaire créer, il me met une erreur et me dirigie pas vers la page de l'affaire en question ?

Merci beaucoup Dan :)

Modifiez la fin du code comme ceci

...
End With

Sheets("Affaire").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Range("H2").Value = Sheets("Liste des affaires").Range("C7").Value
ActiveSheet.Name = "Affaire-" & Sheets("Ajouter une nouvelle affaire").Range("E10").Value

With Sheets("Liste des affaires")
    .Hyperlinks.Add Anchor:=.Range("B7:H7"), Address:="", SubAddress:="'" & ActiveSheet.Name & "'!A1" ', TextToDisplay:=.Range("B7")
    With .Range("B7").Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
End With

Sheets("Ajouter une nouvelle affaire").Range("E16,H13,E13,H10,E10,H7,E7").ClearContents
End Sub

je vais regarder pour l'en cours

Je vous joins le fichier mis à jour.

Désoler mais j'essaye d'apprendre en allant ... Merci d'avance

EDIT : Je suis paumé avec le code maintenant j'ai des erreurs avec le nouveau code que vous m'avez fourni :/

Il me trouve une erreur : Sheets("Ajouter une nouvelle affaire").Range("E16,H13,E13,H10,E10,H7,E7").ClearContents

Est-il possible de supprimé le contenu dans créer une affaire quand celle-ci est crée ?

Merci de votre patience Dan, vous me donnez un bon coup de main.

EDIT : Je suis paumé avec le code maintenant j'ai des erreurs avec le nouveau code que vous m'avez fourni :/

Il me trouve une erreur : Sheets("Ajouter une nouvelle affaire").Range("E16,H13,E13,H10,E10,H7,E7").ClearContents

Bizarre effectivement, modifiez la fin comme ceci

With Sheets("Ajouter une nouvelle affaire")
    .Select
    .Range("E16,H13,E13,H10,E10,H7,E7").ClearContents
End With

Edit : Pour la macro En-cours, utilisez ce code

Sub EnCours()

With Sheets("Liste des affaires")
     .Range("B7:H7").Interior.Color = 49407
     .Select
End With

End Sub

Merci Dan.

Toujours le soucis quand je créer mon affaire, j'ai une erreur je n'arrive pas à trouver où intégrer le code que tu m'as donné.

Peux tu me dire comment supprimé le formulaire automatiquement de création d'affaire afin qu'il se vide quand l'affaire est créer ?

Pour la Macro en cours, quand je sélectionne en cours il prend automatiquement la ligne 7 alors que je voudrais qu'il prenne la ligne de l'affaire en cours

Merci Dan.

Bonjour

Toujours le soucis quand je créer mon affaire, j'ai une erreur je n'arrive pas à trouver où intégrer le code que tu m'as donné.

Peux tu me dire comment supprimé le formulaire automatiquement de création d'affaire afin qu'il se vide quand l'affaire est créer ?

Bon le plus simple est que je remette le fichier en ligne avec les modifications apportées. repartez donc de ce fichier ci.

Petite remarque : Evitez au max les objets sur vos feuilles car dès que vous utiliserez le fichier, il va grossir très vite. Un exemple : plutot que de mettre le mot "AFFAIRE" dans un objet, je l'ai placé dans les cellules E à F. en fusionnant les 3 cellules. Idem pour "Ajouter une nouvelle Affaire" A ces endroits sur la feuille on obtient le même résultat visuellement.
Idem pour les cases à cocher dans la feuille Affaire, on pourrait supprimer ces objets et les remplacer par un code qui mettrait une case à cocher dans les colonne D et G plutot que derrière chaque libellé de rubrique.

Votre fichier est très bien agencé et permet de faire ces modifications. A voir plus tard si vous le voulez mais cela va diminuer le poids du fichier (je viens de le tester)

Rem : Désolé pour mes codes mis dans les posts mais j'évite toujours de mettre trop de fichiers en ligne afin que le forum conserve une fluidité dans la consultation

Super j'ai refais pas mal de modifications, ça fonctionne ! Un grand merci.

Je souhaiterais que quand je passe l'affaire en finaliser, la ligne passe en vert, la feuille d'affaire se supprime, le statut de l'affaire passe en finaliser (ça j'ai réussi à le faire)

Sauf que j'aimerais que les liens hypertexte de la ligne de l'affaire se supprime aussi car du coups il n'y a plus de feuille d'affaire sauf que je n'y arrive pas.

Sub BoutonAffaireTerminer()
Dim lig As Integer

If ActiveSheet.Name = "Affaire" Then Exit Sub
With Sheets("Liste des affaires")
    On Error Resume Next
    lig = .Range("D:D").Find(Mid(ActiveSheet.Name, 9), LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    If lig = 0 Then
        MsgBox "Pas de données dans la feuille Liste des affaires !"
    Else
        .Range("B" & lig & ":I" & lig).Interior.Color = 522377
        .Range("I" & lig & ":I" & lig) = Sheets("Affaire").Range("H16").Value
        ActiveWindow.SelectedSheets.Delete
    End If
     .Select
     .Range("B" & lig).Select
End With

End Sub

Merci d'avance pour votre aide.

Je souhaiterais que quand je passe l'affaire en finaliser, la ligne passe en vert, la feuille d'affaire se supprime, le statut de l'affaire passe en finaliser (ça j'ai réussi à le faire)

Sauf que j'aimerais que les liens hypertexte de la ligne de l'affaire se supprime aussi car du coups il n'y a plus de feuille d'affaire sauf que je n'y arrive pas.

C'est ok pour ce point

J'ai aussi modifié pour les titres. On gagne en poids de fichier
Pour les cases à cocher, j'ai aussi adapté en les plaçant en colonne D et G mais je n'ai pas encore supprimé les cases à cocher à droite du libellé. Je pense que l'on gagne aussi en poids mais à vérifier

Si ok, je poste le fichier

Ok, je vais essayé de croiser les 2 fichiers car depuis j'ai refais pas mal de modifications dessus.. :)

Merci beaucoup pour ta patience en tout cas.

EDIT : Les cases à cocher j'ai réussi à les supprimer sur le miens, mais je sais pas pourquoi il y en avait une centraine l'une sur l'autre ...

C'est mieux que vous repartiez du fichier posté ici je pense

EDIT : Les cases à cocher j'ai réussi à les supprimer sur le miens, mais je sais pas pourquoi il y en avait une centraine l'une sur l'autre ...

Ah c'est peut être cela le souci des cases à cocher c'est qu'il en a des tas. Je comprends pourquoi j'avais l'impression que rien ne se supprimait. Là aussi vous allez gagner en poids. C'est le souci des objets placés sur la feuilles...
J'y suis parvenu !
Voici la méthode pour supprimer plus facilement:
- appuyez sur F5 (ou FN+F5), cela affiche la boite de dialogue "Atteindre".
- Cliquez sur Cellule puis OK. Cette action va sélectionner tous les objets.
- Désélectionner les objets à conserver --> touche CTRL + Click sur l'objet à conserver.
- Une fois fait --> Touche Delete sur le clavier

EDIT : Attention j'ai modifié le fichier posté

Super ton fichier est carrément plus fluide ...

Par contre dans mon affaire je n'arrive pas à cocher les cases ?

Et j'aurais bien aimé que quand je coche une case elle devienne verte et que si je la décoche elle redevient de la couleur qu'elle était ?

Merci beaucoup

Par contre dans mon affaire je n'arrive pas à cocher les cases ?

Ah oui, cela c'est normal car j'ai pensé que l'on ne cochait les cases que dans la feuille relative à l'affaire une fois créé. Donc je dois changer ?

Pour la case verte, je vais regarder

Oui en faite pour chaque nouvelle affaire, je pourrais coché les cases pour savoir se qui est fait en allant.

Avec un si possible la case du commentaire en dessous qui passe en verte pour que ça soit plus instinctif.

Bon c'est assez simple, voici ce qu'il faut faire :

- Aller dans l'éditeur VBA (ALT+F11)
- à gauche dans la fenetre VBA Project, double click sur THISWORKBOOK
- Changer cette ligne dans le code -->

If Target.Count > 1 Or UCase(ActiveSheet.Name) = "AFFAIRE" Then Exit Sub

par

If Target.Count > 1 Then Exit Sub

Pour les cases vertes je dois regarder si c'est possible et modifier

Edit: je n'ai pas compris ce point --> Avec un si possible la case du commentaire en dessous qui passe en verte pour que ça soit plus instinctif.

Rechercher des sujets similaires à "macro formulaire"