IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création de devis à partir d'une base de Fourniture


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut Création de devis à partir d'une base de Fourniture
    Bonjour,

    je voudrais réaliser un tableau pour la création de devis avec des éléments d'une liste de fourniture.
    Alors pour expliquer mon idée, je voudrais remplir la feuille SuiviChantier avec les lignes de la BaseFournitures qui aurait le la cellule "QUANTITE" différente de vide.

    Je n'arrive pas à traiter la formule qui permet de vérifier la première ligne : si elle est remplie, copier l'intitulé et le prix dans le SuiviChantier ; si faux passer à la ligne suivante
    jusqu'à que la première cellule de la première colonne soit vide.

    Merci d'avance de votre aide.


    Cf le fichier : Suivichantier V1.xlsx

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 251
    Points : 5 626
    Points
    5 626
    Par défaut
    Bonjour,

    Une façon de faire pour récupérer les lignes où une quantité est mentionnée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub Fournitures()
        Dim wshFrn As Worksheet, loFrn As ListObject, rFiltr As Range, r As Range
        Dim wshChn As Worksheet, kR As Long
        Set wshFrn = ThisWorkbook.Worksheets("BaseFournitures")
        Set wshChn = ThisWorkbook.Worksheets("SuiviChantier")
        Set loFrn = wshFrn.ListObjects("BaseFrn")
        wshFrn.Select
        '--- filtre sur quantité > 0
        wshFrn.ListObjects("BaseFrn").Range.AutoFilter Field:=4, Criteria1:=">0", Operator:=xlAnd
        Set rFiltr = loFrn.DataBodyRange.SpecialCells(xlCellTypeVisible)
        '--- vérifications préalables
        If rFiltr Is Nothing Then
            MsgBox "Annulé: aucune quantité indiquée !", , "Annulé"
            Exit Sub        '--- EXIT ---
        End If
        If rFiltr.Rows.Count > 29 Then
            MsgBox "Annulé: la feuille SuiviChantier ne peut contenir que 29 fournitures" & vbLf & _
                   "et vous en avez indiqué " & rFiltr.Rows.Count, , "Annulé"
            Exit Sub        '--- EXIT ---
        End If
        If MsgBox("Reprendre ces fournitures ?", vbYesNo, "Vérifier avant de copier !") = vbNo Then
            wshFrn.ListObjects("BaseFrn").Range.AutoFilter
            Exit Sub        '--- EXIT ---
        End If
        If wshChn.Range("G9") <> "" Then
            If MsgBox("Supprimer ce qui se trouve déjà dans SuiviChantier?", vbYesNo, "A confirmer") = vbNo Then
                Exit Sub    '--- EXIT ---
            End If
        End If
        '--- report quantités de BaseFournitures à SuiviChantier
        kR = 9
        With wshChn
            .Range("G9:J37").ClearContents  '--- G9:J37 = plage des fournitures
            'Debug.Print rFiltr.Address
            For Each r In rFiltr.Rows
                'Debug.Print r.Address
                .Range("G" & kR) = loFrn.Range(r.Row, 2)        '--- désignation
                .Range("H" & kR) = loFrn.Range(r.Row, 4)        '--- quantité
                .Range("I" & kR) = loFrn.Range(r.Row, 5)        '--- prix unité
                .Range("J" & kR).FormulaR1C1 = "=RC[-2]*RC[-1]" '--- formule calcul
                kR = kR + 1
            Next r
            .Range("J38").FormulaR1C1 = "=SUM(R[-29]C:R[-1]C)"  '--- formule calcul total
        End With
    End Sub
    Cela dit, vous pourriez regarder si ceci ne vous conviendrait pas mieux:
    Apprendre comment composer un devis, analyser la rentabilité du chantier et présenter des statistiques avec Access.

    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    tout d'abords merci d'avoir pris le temps de m'aider.

    vos formules sont très intéressantes, il y a juste la base que je ne décrypte pas bien.
    Que signifie : le Wsh ? je ne trouve pas sur internet sa signification ? ainsi que :
    rGroupe =
    loFrn =
    wshFrn =

    pouvez-vous m’éclaircir sur ces points ?

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 974
    Points : 29 003
    Points
    29 003
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que vous énumérez sont des variables.
    Pour programmer, on utilise des variables dont le nom doit être le plus explicite possible afin de pouvoir se relire et chacun a sa façon de faire ainsi moi je suffixe les objets "feuille" (Worksheet) par sht et Eric, que je salue au passage, par wsh suivi ensuite par une autre abréviation si l'on utilise plusieurs objets de même type.

    D'après votre demande et à la lecture de son code wshFrn représente sans doute la feuille "BaseFournitures" et wshChn la feuille "SuiviChantier"

    Un peu de lecture éventuellement Utiliser les variables en VBA Excel

  5. #5
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Super explication, je vous en remercie également c'est effectivement plus claire pour moi.

    encore merci à tous

  6. #6
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Je comprends le fonctionnement mais lorsque je veux appliquer votre variable à d'autre page j'ai un message d'erreur sur la même ligne :


    Set loEmp = wshEmp.ListObjects("BaseEmpl") j'ai ici changé de feuille de Base mais l'erreur
    l'indice n'appartient pas à la sélection
    revient sur cette ligne.


    J'ai pourtant bien renommé ma liste d'objet et le nom de mes variables.

    Avez-vous déjà rencontré ce problème ?

  7. #7
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 251
    Points : 5 626
    Points
    5 626
    Par défaut
    Bonjour,

    Cela signifie que la feuille définie par wshEmp ne contient pas de tableau nommé "BaseEmpl" (mais sans doute un tableau ayant un autre nom ... légèrement différent ?).

    Cordialement.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    SUPER, effectivement le nom que j'avais donné au tableau n'était pas reconnu.
    J'ai réussi à régler le problème.

    Je vous remercie pour votre aide et je vous demande si je peux encore profiter de votre avis et vos compétences pour ce même Fichier.

    Il y a certaine information de la feuille SuiviChantier que je voudrai regrouper dans un tableau (dernière feuille du fichier) afin de créer une liste des chantiers avec le montant des travaux.
    Une macro qui récupèrerait les informations attendu dans le tableau (Zone bleu), et une numérotation dans la zone rouge (automatique ou pas je n'ai pas de solution pour cette partie).

    Auriez-vous un début d'idée pour ce requête ?

    Fichier : Suivichantier V2.2.xlsm

    Ceci est un bonus je vous remercie encore pour votre aide.
    et Bonne journée

  9. #9
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 251
    Points : 5 626
    Points
    5 626
    Par défaut
    Bonjour,

    Si j'ai bien compris, vous voudriez faire un suivi des dépenses journalières par chantier dans la feuille Feuil1 cela en utilisant les données enregistrées dans la feuille SuiviChantier. Si c'est le cas, ce n'est à mon avis pas une bonne idée vu que ce qui est dans la feuille SuiviChantier est temporaire: la feuille est régulièrement effacée puis re-remplie avec d'autres données. Si une donnée a été mal encodée ou oubliée, plus moyen de retrouver et corriger cela. Le plus simple serait plutôt d'avoir une seule feuille récapitulative contenant toutes les dépenses pour chaque chantier, feuille qu'il sera possible d'archiver une fois le chantier clôturé.

    Cordialement.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Je comprends ce que vous dites, mais sur le principe mes collègues vont remplir ce tableau pour réaliser des bons afin de faire valider les chantiers à notre comptabilité.
    Je voulais donc pouvoir remplir la fiche SuiviChantier avec les éléments qu'ils auront choisis*, puis récupérer les informations nécessaire pour compléter le tableau de suivi de bon.

    Ce tableau va donc servir de base afin de faire un suivi du nombre** de bon réalisé et remonter sur ces mêmes bons afin de réaliser les travaux.

    * par la suite une macro me servira a exporter un format .pdf des informations et effacer le contenu du tableau afin qu'il soit près pour une nouvelle utilisation
    ** c'est pour cela que la numérotation est importante, bien que si il le faut elle sera manuel et fera partie des éléments récupérés et inscrit dans ce tableau

    j'essaie d'être le plus clair possible n'hésitez pas si vous avez des questions.

  11. #11
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 251
    Points : 5 626
    Points
    5 626
    Par défaut
    Si vous savez écrire une macro qui récupère les données utiles de la feuille SuiviChantier pour compléter la feuille Feuil1, pour ce qui est du numéro, le plus simple est d'utiliser le calcul MAX("A:A")+1 (par exemple en le mettant en cellule B2).

    Cordialement.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    A oui sympa cette formule, je vais effectivement ma conserver.

    Et en ce qui concerne la récupération d'information je ne l'ai pas encore trouvé.

    merci pour votre aide

  13. #13
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 251
    Points : 5 626
    Points
    5 626
    Par défaut
    Bonjour,

    Vous devriez trouver quelques idées dans le fichier joint. Yapluka reprendre les mêmes principes pour terminer l'application. Je crains cependant que les utilisateurs trouvent l'encodage assez fastidieux. Ceux qui aiment manier le marteau n'ont souvent aucun plaisir à tapoter des touches de clavier!

    Cordialement.
    Fichiers attachés Fichiers attachés

  14. #14
    Membre à l'essai
    Homme Profil pro
    Gestion Patrimoniale des Réseaux eau et assainissement
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestion Patrimoniale des Réseaux eau et assainissement

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Je voulais vous remercier pour votre aide.
    Sur votre dernier retour je n'ai pas tout utilisé car je ne veux pas laisser trop de liberté aux agents pour éviter qu'ils ne perdent des informations.

    Et pour vous montrer le fichier final et pour faire profiter de notre collaboration à qui en aura besoin je mets le fichier fini ici Suivichantier V3.xlsm

    Encore merci pour votre aide.

    Bonne journée et semaine à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/04/2011, 23h38
  2. Création Base de Données à partir d'une base Modèle
    Par AVE_ISEO dans le forum Import/Export
    Réponses: 0
    Dernier message: 26/02/2010, 12h04
  3. Réponses: 2
    Dernier message: 27/03/2009, 17h14
  4. création histogramme à partir d'une base sql
    Par coco38 dans le forum Langage
    Réponses: 7
    Dernier message: 07/04/2007, 12h57
  5. Réponses: 1
    Dernier message: 29/10/2006, 06h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo