Excel, lien entre tableau et devis

Fermé
france_736 Messages postés 6 Date d'inscription vendredi 24 février 2012 Statut Membre Dernière intervention 28 février 2012 - 24 févr. 2012 à 16:14
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 28 févr. 2012 à 12:43
Bonjour,

je suis commerciale, je vends des caisses enregistreuses.
Afin de simplifier l'élaboration des devis, j'ai créé un tableau sous excel qui reprends la liste des différents produits dans la colonne C par exemple.
Et dans la colonne B, il y a un zéro. si je remplace ce zéro par un 1, le prix du ou des produits concernés s'affiche et j'ai rapidement le total en euro en bas du tableau.

Voici ma question :
j'aimerais que le ou les produits devant lesquels je mets un "1" au lieu du "0" soit directement envoyé dans un devis préenregistré (avec en-tête, adresse du client etc.. donc un document officiel présentable,imprimable et destiné au client. il verrait donc uniquement les produits qui l'interesse et le prix, et pas la liste complète de tous les produits avec un "1" devant ce qu'il m a demandé)
dois-je faire mon devis dans une deuxieme feuille excel ou plutot Word; comment faire le lien entre ces deux documents en sachant qu'il y a une condition "si" puisque on prend la ligne en compte SI il y a un "1" devant uniquement.
il y aurau un espace réservé aux cellules prises en compte mais comment ces cellules vont telle venir se mettre l'une à la suite de l'autre à l'endroit ou je l'ai décidé
....
D avance merci

A voir également:

6 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
24 févr. 2012 à 16:21
Bonjour,

Qu'elle que soit la solution que tu choisiras, il faut savoir que ce genre de chose se fait par procédure VBA (Macro).
Donc, tu as le choix entre utiliser une seconde feuille de ton classeur ou un doc word.
A ta place, je préfèrerais n'utiliser que mon classeur excel. On pourrait même imaginer une 3ème feuille qui te servirais de base de données avec tous tes devis enregistrés...
Le mieux pour nous maintenant, ça serait que tu construises tes 2 feuilles (tu as déjà réalisé la 1ère il me semble). Donc tu fais ta feuille "devis", avec des infos bidons et tu nous la transfères ici en utilsant https://www.cjoint.com/
Tu va sur ce site créer un lien vers ton fichier puis reviens ici coller ce lien dans une réponse.
En attente du fichier.
1
france_736 Messages postés 6 Date d'inscription vendredi 24 février 2012 Statut Membre Dernière intervention 28 février 2012
Modifié par krazykat le 28/02/2012 à 12:34
http://cjoint.com/*****.htm

voici le doc avec deux feuilles excel comme prévu
le devis est à titre d'exemple je l'ai fait vite fait ...
0
france_736 Messages postés 6 Date d'inscription vendredi 24 février 2012 Statut Membre Dernière intervention 28 février 2012
Modifié par krazykat le 28/02/2012 à 12:33
http://cjoint.com/*****.htm

voici le doc avec deux feuilles excel comme prévu
le devis est à titre d'exemple je l'ai fait vite fait ...
Merci pour votre réponse si rapide :)
0
Raymond PENTIER Messages postés 58764 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 décembre 2024 17 256
25 févr. 2012 à 00:26
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
france_736 Messages postés 6 Date d'inscription vendredi 24 février 2012 Statut Membre Dernière intervention 28 février 2012
28 févr. 2012 à 11:29
bonjour,
j'ai mis le tableau en ligne pour une duréede 4 jours maximum.
Avez-vous eu assez de temps pour y jeter un oeil ?
je peux le remettre si necessaire.
merci,
France
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par krazykat le 28/02/2012 à 12:34
Bonjour,
Non non pas la peine, j't'avais juste oublié...
Regarde ce fichier :
http://cjoint.com/*****j
0
france_736 Messages postés 6 Date d'inscription vendredi 24 février 2012 Statut Membre Dernière intervention 28 février 2012
28 févr. 2012 à 12:22
génniiaallllll merci :) vraiment le top !!! je suis super contente

mais je vais encore demander une chose :
pourriez-vous m'expliquer votre macro en la copiant ici (si c est possible)
que que je puisse par exemple juste aller changer dans la macro la colonne à copier en cas de 1.
je m explique, ici nous copions la colonne D ("le libellé" du produit) lorsqu'il y a un '1', ca on est bien d accord,
mais maintenant que je sais que ca fonctionne (grace à vous <3 :)))) ) et bien je vais ajouter une colonne avec un libellé plus simple pour le client, donc si je peux aller par la suite changer dans votre macro la colonne D en .. X (par exemple), ce sera parfait.
et si je comprends bien le mecanisme, je pourrai ajouter peut etre par la suite une ou deux choses mais je dois en parler avec le patron, nous allons mettre ca au point et si vraiment je ne me debrouille pas avec vos explications, je ferai de nouveau appelle à votre gentillesse....
pour info, je ne sais pas ou on voit la macro dans excel :/ et oui je n y connais pas grand chose, j ai eu quelques cours mais bon pas suffisant et jamais de macro (si c est bien de ca que nous parlons) donc si vous pouviez aussi m indiquer ou je vais la chercher ca m aide :)

alors je dois enregistrer votre document sur cjoint dans mon ordi je suppose et par la suite il ne sera plus trouvable ? car je ne peux laisser trop longtemps ces informations sur le net, si vous voyez ce que je veux dire :) mais pas de probleme le temps que nous ayons fini le boulot

je vous remercie encore une fois, c est génial ce site autant que vous, énorme!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
28 févr. 2012 à 12:26
sur cjoint, si personne n'y retourne et ne le télécharge, il sera effacé dans quelques jours.
Il faut donc demander à un modérateur d'ici de supprimer dans les deux messages ou toi et moi avons fait un lien vers ton fichier, ce fameux lien. Comme ça : plus d'accès à ton fichier sur cjoint.
Oui enregistre le, je te fais les commentaires de la macro dans une réponse.
A tout à l'heure.
0
france_736 Messages postés 6 Date d'inscription vendredi 24 février 2012 Statut Membre Dernière intervention 28 février 2012
28 févr. 2012 à 12:33
ok on supprimera tout ca quand ce sera vraiment au point, pas d'urgence non plus :)
votre travail m'est précieux en tout cas...
à plus tard :)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 28/02/2012 à 12:44
Pour accéder au code VBA, dans ce cas, clic droit sur l'onglet « Feuil1 » / visualiser le code.

Regarde ça, j'ai essayé d'être explicite, quitte à horrifier les puristes... :
'signifie que toutes les variables devront être déclarées 
Option Explicit 

'cette procedure se déclenche automatiquement lorsque la feuille en question ("Feuil1") 
'change. Quelque soit le changement dans cette feuille. Ne concerne que la Feuil1. 
Private Sub Worksheet_Change(ByVal Target As Range) 
'déclaration des variables 
Dim DrLg As Long, Lig As Integer, Trouve As Range 

'******** ici on va definir la plage qui provoquera l'événement lors d'un changement***** 
'dernière ligne non vide de la colonne C 
DrLg = Range("C" & Rows.Count).End(xlUp).Row 

'Target = cellule qui a changé 
's'il n'y a pas d'intersection entre la cellule et le Range([C12], Cells(Rows.Count, 3).End(xlUp))) 
'soit si la cellule qui a changé n'appartient pas à « C12:C85 » (dans ton exemple)  
'alors on quitte la procédure et on ne fait rien. 
If Intersect(Target, Range([C12], Cells(Rows.Count, 3).End(xlUp))) Is Nothing Then Exit Sub 

'si le contenu de la cellule qui a changé est égal à 1 alors 
If Target.Value = 1 Then 
    'dans la feuil2 
    With Sheets("Feuil2") 
        'on determine la ligne qui va recevoir les données colonne A 
        Lig = .Range("A23").End(xlUp).Row + 1 
        'cette ligne doit au minimum être supérieure ou égal à 8 
        If Lig < 8 Then Lig = 8 
        'si tout est remplit (à partir de la ligne 22) 
        If Lig >= 22 Then 
            'alors le devis est considéré comme remplit ==> message 
            MsgBox "Devis complet! Enregistrement annulé" 
             'on ne fait rien et on quitte la procédure 
            Exit Sub 
        End If 
        'si tous les tests precedents sont ok alors : 
        'on remplit les colonnes A et F des données situées : 
               'Target.Offset(0, 1) = décaler de 0 ligne et de 1 colonnes à droite de la Target 
                         'soit colonne D Feuil1 
        .Range("A" & Lig) = Target.Offset(0, 1) 
    ''Target.Offset(0, 2) = décaler de 0 ligne et de 2 colonnes à droite de la Target 
                          'soit colonne E Feuil1 
        .Range("F" & Lig) = Target.Offset(0, 2) 
    End With 


'Par contre, si le contenu de la cellule qui a changé est égal à rien ou 0 alors 
ElseIf Target.Value = "" Or Target.Value = 0 Then 
    'dans la feuil2 
    With Sheets("Feuil2") 
        'entre Feuil2 !A8:A22 on cherche le contenu de la colonne D, cellule voisine de Target 
        Set Trouve = .Range("A8:A22").Cells.Find(Target.Offset(0, 1).Value, Lookat:=xlWhole) 
            'si on ne le trouve pas. (cas de l'effacement d'un zéro par exemple) 
            If Trouve Is Nothing Then 
                'un message d'information préviens 
                MsgBox "Le devis ne comportait pas cette élément!, veuillez vérifier" 
                Exit Sub 
            Else 
           'si on trouve le contenu de la cellule (voisine à Target Colonne D Feuil1) dans la plage Feuil2 !A8 :A22 Alors 
            'on prends son numéro de ligne 
                Lig = Trouve.Row 
            End If 
        Set Trouve = Nothing 
        'le but est d'effacer cette ligne alors : 
         'on coupe les cellules comprises entre A(Ligne+ 1) et F22 
          'et on les colle une ligne au dessus, donc à la place de la ligne que l'on veux effacer 
        .Range("A" & Lig + 1 & ":F22").Cut .Range("A" & Lig) 
    End With 
'A partir d'ici on remets juste une bordure à la plage A8:F24 
    With Sheets("Feuil2").Range("A8:F24").Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .Weight = xlMedium 
        .ColorIndex = xlAutomatic 
    End With 
    With Sheets("Feuil2").Range("A8:F24").Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .Weight = xlMedium 
        .ColorIndex = xlAutomatic 
    End With 
    With Sheets("Feuil2").Range("A8:F24").Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .Weight = xlMedium 
        .ColorIndex = xlAutomatic 
    End With 
    With Sheets("Feuil2").Range("A8:F24").Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlMedium 
        .ColorIndex = xlAutomatic 
    End With 
End If 
End Sub

Et dis moi...
Cordialement,
Franck P
0