Création de gestion de budget

nicol@s44

XLDnaute Nouveau
Bonjour,

Pour mon travail, je souhaiterai gérer la création de budget chantier par onglet ainsi que le récap. de ces chantiers sur un fichier excel. Mais je n'arrive pas à faire de macro (ou autres) pour cela.

Donc je souhaite, utilise l'onglet "TYPE" pour générer les autres onglet 01 - 02 - 03 (qui se nomme comme la cellule H1).
Puis reprendre les informations pour remplir le récap. des chantiers sur la première page et le classer.

Je vous lie mon fichier avec trois exemples.

Merci de vos réponses.
 

Pièces jointes

  • Budget Type 216.xls
    113.5 KB · Affichages: 60
  • Budget Type 216.xls
    113.5 KB · Affichages: 51

Victor21

XLDnaute Barbatruc
Re : Création de gestion de budget

Bonjour, Nicol@s44.

Au plus simple :
Clic droit surl'onglet de la feuille "TYPE", déplacer ou copier, Créer une copie avant "TYPE", puis renommer.
Et en C7 de Chantier 21-2016" à recopier vers le bas :
=INDIRECT($A7&"!K37")

En réorganisant les données à récupérer dans les différentes feuilles (Ex : en K37, Budget FJ, En L37, Marge, en M37 : Achat...jusqu'à P37), vous pourriez également recopier la formule ci-dessus vers la droite.
 

thebenoit59

XLDnaute Accro
Re : Création de gestion de budget

Bonjour nicol@s44, bonjour Victor21.

J'ai repris la formule de Victor21 pour la feuille récapitulative, ce qui est bien intéressant.

Sur ton fichier, une fois ta feuille Type remplie, tu crées la nouvelle feuille Chantier en appuyant sur Nouveau Chantier.
La feuille Type sera dupliquer et renommer en fonction du n° de chantier.
Si tu n'en as pas mis, il te demande d'en ajouter un.
S'il existe déjà, il te demande de changer de numéro de chantier.

Ta feuille récapitulative est mise à jour avec le nouveau chantier, et grâce à la formule de Victor21, les formules aussi.
Ta feuille Type est remise à zéro pour pouvoir être réutilisée.
 

Pièces jointes

  • Budget Type 216.xls
    122 KB · Affichages: 45
  • Budget Type 216.xls
    122 KB · Affichages: 62

JCGL

XLDnaute Barbatruc
Re : Création de gestion de budget

Bonjour à tous,
Salut Patrick,

Un essai qui permet de "revenir sur les feuilles chantier" et de mettre à jour la feuille récapitulative.
J'ai un petit doute sur la gestion des erreurs sous XL2007.

A+ à tous
 

Pièces jointes

  • JC Budget Type 216.xlsm
    90.2 KB · Affichages: 67

nicol@s44

XLDnaute Nouveau
Re : Création de gestion de budget

Merci Merci Merci

C parfait, pourrais je vous demander deux fonction supplémentaire?
Je souhaiterai trier les onglets par ordre croissant.
Et que le nom du chantier se remplisse automatiquement dans la page 1.

Merci de votre réponse.
 

thebenoit59

XLDnaute Accro
Re : Création de gestion de budget

Tu peux remplacer le code par le suivant :

Code:
Sub GestionChantier()
Dim fType As Worksheet, fRecap As Worksheet, fNouveau As Worksheet, Chantier As String, nChantier As String
Dim lLigne As Long, i As Integer 'Déclaration des variables

Set fType = Worksheets("Type")
Set fRecap = Worksheets("Chantier 216 - 2016")
Chantier = fType.Range("H1")
nChantier = fType.Range("A1")

    If Chantier = "" Then Chantier = InputBox("Ajouter un numéro de chantier.") 'Si aucun numéro de chantier n'était rempli on en demande une
    fType.Range("H1") = Chantier
    
    For i = 1 To Worksheets.Count 'On vérifie si le numéro de chantier n'existe pas
        If Worksheets(i).Name = Chantier Then
            Chantier = InputBox("Ce numéro de chantier est déjà attribué." & Chr(10) & "En attribuer un autre.")
        End If
    Next i
    
    fType.Copy before:=fType 'On copie la feuille type
    ActiveSheet.Name = Chantier 'On modifie la nouvelle feuille par le numéro de chantier
    Worksheets(Chantier).Shapes.Range(Array("NouveauChantier")).Delete

    fRecap.Activate 'On va dans la feuille récapitulative
    lLigne = Cells(Rows.Count, 1).End(xlUp).Row 'On cherche la dernière ligne
    Rows(lLigne).Copy Rows(lLigne + 1) 'On la copie colle à la ligne suivant
    Range("A" & lLigne + 1) = Chantier 'On modifie le numéro de chantier
    Range("B" & lLigne + 1) = nChantier 'On modifie le nom du chantier
    
    With Range("A" & lLigne + 1 & ":I" & lLigne + 1).Borders(xlEdgeTop) 'On modifie l'aspect de la bordure haute de la dernière ligne
        .LineStyle = xlContinuous
        .Weight = xlHairline
    End With

    fType.Range("C3:G47,H1,A1:E1").ClearContents 'On nettoie la feuille type
    
    Call TrierOnglets
    
End Sub

Sub TrierOnglets()

    Dim Boucle As Integer, Compteur As Integer

    For Boucle = 2 To Sheets.Count
        For Compteur = 2 To (Boucle - 1)
            If (UCase(Sheets(Boucle).Name) < UCase(Sheets(Compteur).Name)) Then
                Sheets(Boucle).Move before:=Sheets(Compteur)
                Exit For
            End If
        Next Compteur
    Next Boucle

End Sub

Le tri ne s'effectue qu'à partir du second onglet, pour que ton récapitulatif reste toujours en premier.
Si tu veux trier la totalité remplacer Boucle = 2 par 1 et Compteur = 2 par 1.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander