Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/02/2013, 09h12   #1
megi8359
Invité de passage
 
Femme magali
Inscription : février 2013
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme magali
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2013
Messages : 7
Points : 0
Points : 0
Par défaut Desactiver liens fonctions

Bonjour,
J'ai un tableau excel indépendant qui reprend les caractéristiques et prix de tous mes articles.
Pour chacune des familles de produits, j'ai un MODELE de devis xltm
Dans ce modèle, j'ai utilisé la fonction index qui me permet de sélectionner mon article en liste déroulante, et ainsi toutes les caractéristiques ainsi que les prix qui sont dans mon classeur indépendant se mettent à jour automatiquement.
Jusque là, tout va bien.
Mes problèmes :
1- pour activer ces liens, il faut que le classeur de prix soit ouvert. Connaitriez vous un moyen (peut être une macro) qui ferait que ce classeur s'ouvre lui aussi automatiquement à l'ouverture du modèle de devis?
2-Pb plus important : que mes liens se mettent à jour à l'ouverture du modèle, c'est très bien, c'était d'ailleurs le but recherché !!!! Mais une fois que j'enregistre mon devis client en xlsx, qui n'est donc plus un modèle mais un devis normal, unique à un Client spécifique, je voudrais que les mises à jour ne se fassent plus avec mon classeur de base.
Je m'explique, j'utilise le modèle de devis en 2013, j'envoie le devis au client en 2013 avec caractéristiques et prix 2013. Arrive 2014, je change mes caractéristiques, ou simplement mes prix, je voudrais que mon devis client ne "bouge" pas pour garder une trace de ce que j'ai envoyé en 2013.
Merci de m'aider.
Et merci de votre attention.
Cordialement
megi8359 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 15h13   #2
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 580
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 580
Points : 9 222
Points : 9 222
Bonjour,

1. pour l'ouverture du classeur tu peux faire cela dans l’évènement Open dans Thisworkbook

2. si les fichiers ne doivent plus changer après enregistrement, tu peux toujours utiliser l'enregistrement sous format pdf.
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 10h32   #3
keygen08
Membre éprouvé
 
Avatar de keygen08
 
Homme Christophe GAROT
Inscription : octobre 2012
Messages : 272
Détails du profil
Informations personnelles :
Nom : Homme Christophe GAROT
Localisation : France, Ardennes (Champagne Ardenne)

Informations forums :
Inscription : octobre 2012
Messages : 272
Points : 490
Points : 490
Bonjour
A placer dans VBAproject/Microsoft excel objets/this workbook
permet l 'ouverture du classeur source

Code :
1
2
3
4
5
6
Private Sub Workbook_Open()
Dim Cls As Workbook
 
Set Cls = Application.Workbooks.Open("c:\sources\matériel informatique.xls", , True)
'true signifie une ouverture en lecture seule, faire trés attention au chemin du fichier
End Sub
Permet de rompre les liaisons lors de la fermeture du classeur et ferme le classeur source

Code :
1
2
3
4
5
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
    ActiveWorkbook.BreakLink Name:="c:\sources\matériel informatique.xls", Type:=xlExcelLinks
    'nom du classeur source.Close
End Sub
__________________
L'expérience, c'est une connerie par jour, mais jamais la même..

N'oubliez pas d'indiquer si la réponse convient à vos attentes.
keygen08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 10h53   #4
megi8359
Invité de passage
 
Femme magali
Inscription : février 2013
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme magali
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2013
Messages : 7
Points : 0
Points : 0
Par défaut Suite essais

Merci beaucoup keygen08,
tes conseils fonctionnent parfaitement, c'est génial, merci encore!

Si je peux me permettre une autre question :
mon classeur de base étant un modèle
quand je le ferme, il s'enregistre dans un autre classeur normal
Grâce à l'action que tu m'as conseillée dans VBA, pas de problème les liens se désactivent.

en revanche, quand j'ouvre ce nouveau classeur sans liens en xlsm, le classeur de prix de base s'ouvre toujours alors que, pour le coup, je n'en ai plus besoin...
Peut désactiver son ouverture quand j'enregistre mon devis?

De plus, toujours pour l'enregistrement, je souhaiterais enregistrer uniquement la feuille en cours d'utilisation...Faute de mémoire, j'aurais un problème si tous mes devis reprennent l'ensemble du classeur.

Merci encore pour tes conseils si tu peux m'aider.
cordialement,
megi8359 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 22h42   #5
keygen08
Membre éprouvé
 
Avatar de keygen08
 
Homme Christophe GAROT
Inscription : octobre 2012
Messages : 272
Détails du profil
Informations personnelles :
Nom : Homme Christophe GAROT
Localisation : France, Ardennes (Champagne Ardenne)

Informations forums :
Inscription : octobre 2012
Messages : 272
Points : 490
Points : 490
Bonsoir

Citation:
Peut désactiver son ouverture quand j'enregistre mon devis?
Code :
1
2
3
4
5
6
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'supprime la ligne 4 de thisworkbook-open
    ThisWorkbook.VBProject.VBComponents("thisworkbook").CodeModule.DeleteLines (4)
    ActiveWorkbook.BreakLink Name:="c:\sources\matériel informatique.xls", Type:=xlExcelLinks
    'nom du classeur source.Close
End Sub
Citation:
je souhaiterais enregistrer uniquement la feuille en cours d'utilisation
Il faudrai, je pense, au moment de l'enregistrement exporter cette feuille dans un nouveau classeur ainsi elle serait seule dans le classeur et il n'y aurait meme plus besoin de modifier l'autre macro. Les liens deviendait egalement inactif a ce moment la.
Cela donnerai 1 . ouverture des 2 classeurs
2 . etablissement du devis
3 . creation d'un classeur, exportation des données, enregistrement
4 . remise a zero de ton classeur modele et fermeture.

Ne serai ce pas plus simple ainsi.
__________________
L'expérience, c'est une connerie par jour, mais jamais la même..

N'oubliez pas d'indiquer si la réponse convient à vos attentes.
keygen08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 11h05   #6
megi8359
Invité de passage
 
Femme magali
Inscription : février 2013
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme magali
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2013
Messages : 7
Points : 0
Points : 0
Par défaut comment?

Merci encore de ta disponibilité.
Ton orientation semble en effet super interessante et elle simplifierait énormément les choses...
Mais là, est ce mon inexpérience ou la tête dans le guidon, mais je suis complètement larguée!
comment la mettre en oeuvre?
Merci encore
megi8359 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 11h37   #7
keygen08
Membre éprouvé
 
Avatar de keygen08
 
Homme Christophe GAROT
Inscription : octobre 2012
Messages : 272
Détails du profil
Informations personnelles :
Nom : Homme Christophe GAROT
Localisation : France, Ardennes (Champagne Ardenne)

Informations forums :
Inscription : octobre 2012
Messages : 272
Points : 490
Points : 490
Par défaut Ajout de code

Il est un proverbe qui dit : cent fois sur le metier, tu remettras ton ouvrage.

Donc, on pourrai aussi creer un userform ressemblant a ta feuille et copier les données dans une database(une feuille excel ne contenant que les données), ensuite on rapelle la ligne concernée qui charge le userform en fonction des critere nom, prenom, n°client ou autres.
avantage: tous est dans le meme classeur
inconvenient : difficulté de mise en oeuvre pour un débutant

Tous cela pour dire qu'il n'y pas UNE solution mais DES solutions. Il faut juste trouvé la plus adapté a nos besoins.
Je te prepare l'idée d'exporter la feuille de saisie dans un autre classeur.
Avantage : Facile
Inconvenient : Un fichier par client (mais on peut lister ces fichier dans une colonne et s'arranger pour y acceder d'un clic)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub CommandButton1_Click() 'crer un classeur d'une feuille
Dim Cld As Workbook, Cls As Workbook
Dim Nom As String, Prenom As String
'j'ai choisi d'enregistrer le fichier sous nom prenom.xls dans un dossier Devis sur le disque c:
    Nom = ActiveWorkbook.ActiveSheet.Range("a1").Value
    Prenom = ActiveWorkbook.ActiveSheet.Range("b1").Value
'je copie la feuille source
   ActiveWorkbook.ActiveSheet.Copy
        ActiveWorkbook.SaveAs Filename:="c:\devis\" & Nom & " " & Prenom & ".xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
       'rompre les liens
        ActiveWorkbook.BreakLink Name:="c:\sources\devis.xls", Type:=xlExcelLinks
 
    ActiveWorkbook.Close True
'on peut ensuite refermer le classeur d'origine sans modifications pour le retrouver vierge la prochaine fois
End Sub
Tu as mis le pied dans un nid de fourmi et la boite à idée est en route.
__________________
L'expérience, c'est une connerie par jour, mais jamais la même..

N'oubliez pas d'indiquer si la réponse convient à vos attentes.
keygen08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h29.


 
 
 
 
Partenaires

Hébergement Web