Lien entre devis (après validation) et tableau récapitulatif

Coucou Nad Dan, c'est encore moi lol (non pas marrant hein ??? désolée).

J'ai voulu modifier ma macro.

J'ai donc, sur ma disquette (image sur devis), fait un clic droit. insérer une macro.

J'ai donc mis la macro nommée Archiver.

Maintenant !!!! pffffffffffffff dégoûtée :

Ca me dit :

Erreur d'exécution '-2147467259(80004005)'

La méthode 'Select' de l'objet 'Shape' a échoué

Quand je vais dans débogage, voici ce qui est en jaune : .Select (en dessous de With ActiveSheet.Shapes(4)

Sub Archiver()

'Macro par Dan & Nad pour Belette - XL pratique le 02/04/08

Dim extension As String, msg As String, title As String, Response As String, Reference As String

Dim style As Integer

Application.ScreenUpdating = False

If ActiveSheet.Name = "MODELE" Then

msg = "Avez-vous tout vérifier avant de valider (remise,...) ?"

style = vbYesNo + vbQuestion

title = "FAITES VOS MODIFICATIONS"

Response = MsgBox(msg, style, title)

If Response = vbNo Then

With ActiveWindow

.ScrollRow = 17

.ScrollColumn = 1

End With

Range("B41").Select

End

End If

End If

ThisWorkbook.ActiveSheet.Copy

ActiveSheet.UsedRange.Activate

extension = ".xls"

If ActiveSheet.Name = "MODELE" Then

chemin = "C:\Documents and Settings\Administrateur\Mes documents\DEVIS\"

nomfichier = ActiveSheet.Range("D11") & ActiveSheet.Range("D14") & Format(Now(), "-jjjj" & "-mmmm") & Format(ActiveSheet.Range("D7"), "0000") & extension

End If

MsgBox "Votre sauvegarde porte la référence : " & nomfichier

With ActiveWorkbook

With ActiveSheet.Shapes(4)

.Select ( la en jaune)

Selection.Characters.Text = "Faire une Facture"

.OnAction = "Facturation"

End With

With ActiveSheet.Shapes(3)

.Select

Selection.Font.ColorIndex = 15

.OnAction = ""

End With

With ActiveSheet.Shapes(2)

.Select

Selection.Characters.Text = "Enregistrer modification"

.OnAction = "RecapDevis"

With ActiveWindow

.ScrollRow = 5

.ScrollColumn = 1

End With

Range("C11").Select

End With

.ActiveSheet.Name = "BASE DE DONNEES POUR DEVIS"

.SaveAs Filename:=chemin & nomfichier

.Close

Call RecapDevis

Call Ajouter

End With

End Sub

re,

Bon je vois que tu fais des tests mais bon n'essaie pas d'aller trop vite sinon tu vas planter toute l'appli.

Là dis toi que tu as repris un fichier existant et que, dans ces cas, c'est parfois plus difficile d'adapter à la demande spécifique. Donc normal que cela plante par ci par là.

En premier donne moi par rapport à ton fichier, quel nom de fichier tu veux donner à la sauvegarde.

A partir de là je te donnerai le code complet à essayer pour la macro Archiver.

A te relire

Dan

Bonjour,

Je voudrais que le devis soit enregistré dans :

C:\Documents and Settings\Administrateur\Devis

Je voudrais que l'enregistrement porte le nom suivant :

Nom du client

Ville du client

Jour et mois du devis

N° du devis

Chaque élément (nom du client, ville du client, ...) doit être séparé par un tiré afin que ce soit plus lisible.

Penses-tu que c'est faisable ?

Dans l'attente de te lire et encore merci pour tout.

re,

1. Attention là tu changes le répertoire ....

Dans ton dernier message tu mets --> chemin = "C:\Documents and Settings\Administrateur\DEVIS\"

alors que tu me disais hier --> chemin = "C:\Documents and Settings\Administrateur\Mes documents\DEVIS\"

Lequel est correct ?

2. Pour le nom, en fonction de ce que tu m'écris, cela devrais donner pour le fichier posté --> HOPITAL LOCAL DIEUDONNE COLLOMP-BANON-2203-LG0004

C'est correct ?

A te relire

Dan

Edit Dan : autre chose, dans la feuille client crée une colonne spécifique pour le CP. Mets le CP en colonne I et la ville en colonne J. Dans ta feuille Modèle, mets le CP en C14 et la ville en D14. Ce sera plus facile pour les macros. Si tu ne préfères pas, je reverrai le code en fonction. Merci de préciser.

Re bonjour,

En effet, il paraît que le fait de faire un enregistrement directement sur le bureau, est moins bien que de le faire dans mes documents voilà pourquoi.

Par ailleurs, je vais donc opter pour un enregistrement comme suit :

chemin ="C:\Documents and Settings\Administrateur\Mes documents\DEVIS\"

Je ferai un raccourci sur mon bureau. Qu'en penses-tu ?

Nickel pour le nom du fichier lors de l'enregistrement.

J'ai donc modifié le CP en C14 et la ville en D14.

Dans l'attente de te lire.

Merci

Re,

Remplace la macro Archiver par celle ci-dessous :

Sub Archiver()
'Macro par Dan  pour cgadon - XL pratique le 22/03/09
Dim extension As String, msg As String, title As String, Response As String, Reference As String
Dim style As Integer
Application.ScreenUpdating = False

If ActiveSheet.Name = "MODELE" Then
msg = "Avez-vous tout vérifier avant de valider (remise,...) ?"
style = vbYesNo + vbQuestion
title = "FAITES VOS MODIFICATIONS"
Response = MsgBox(msg, style, title)
If Response = vbNo Then End
End If
ThisWorkbook.ActiveSheet.Copy
ActiveSheet.UsedRange.Activate
extension = ".xls"
With ActiveSheet
If .Name = "MODELE" Then
chemin = "C:\Documents and Settings\Administrateur\Mes documents\DEVIS\"
nomfichier = .Range("C11") & "_" & Format(Range("D5"), "dd" & "mm") & "_" & _
    .Range("D14") & "_" & .Range("D7") & Format(.Range("E7"), "0000") & extension
End If
End With
With ActiveWorkbook
MsgBox "Votre sauvegarde porte la référence : " & nomfichier
    .ActiveSheet.Name = "BASE DE DONNEES POUR DEVIS"
    .SaveAs Filename:=chemin & nomfichier
    .Close
Call RecapDevis
Call Ajouter
End With
End Sub

Il faut aussi dissocier la colonne F en deux. Une pour le CP et une autre pour Ville. Ensuite la macro RECAPDEVIS doit être modifiée en remplaçant

.Cells(ligne, 7) = Sheets(feuilleactive).Range("F30")

par

.Cells(ligne, 7) = Sheets(feuilleactive).Range("D14")
.Cells(ligne, 8) = Sheets(feuilleactive).Range("F30")

Toujours dans Recapdevis :

  • supprimer le nom "DEVIS" dans --> Case Is = "MODELE", "Devis"
  • plus bas remplacer "If Sheets(feuilleactive).Name = "Devis"" Then par If Sheets(feuilleactive).Name = "Modele" Then.

A te relire

Dan

Merci pour toutes ces informations. J'ai donc fait les modifications.

L'enregistrement se fait super bien. Mais : quand je clique sur la disquette pour enregistrer, on me donne bien le chemin où le devis va être enregistré et, mon écran se met complètement en gris.

Il me semble que c'est depuis que j'ai changer ci-dessous :

Toujours dans Recapdevis :

  • supprimer le nom "DEVIS" dans --> Case Is = "MODELE", "Devis"
  • plus bas remplacer "If Sheets(feuilleactive).Name = "Devis"" Then par If Sheets(feuilleactive).Name = "Modele" Then.

Encore un petit problème : le numéro de devis reste toujours le même : j'aurai voulu que le n° soit n°+1 après chaque enregistrement.

Dans l'attente de te lire.

Merci

re,

L'écran gris : Cela peut venir du fait que ton répertoire de sauvegarde n'est pas le bon. Là tu dois être sure de ce que tu m'as donné. La macro te donne le nom du fichier par l'endroit où il sera enregistré.

Problème devis : vérifie que 'linstruction est bien comme ceci : --> Case Is = "MODELE"

Numérotation : cela doit se faire automatiquement lors de l'archivage. Je n'ai aucune souci à ce sujet. La numérotation se fait lors dans la macro Ajouter.

A te relire

Dan

Bonsoir,

En fait, l'enregistrement se fait très bien aussi bien dans mes documents que dans l'onglet recapdevis mais, lorsque je clique sur la disquette (dans l'onglet modèle), ça me dit : avez-vous vérifier..... je clique sur oui puis ça me donne l'adresse de l'enregistrement de celui-ci et là, le noir...

Je dois retourner dans ouvrir dossier......... pour revenir sur ma base de données.

Vois-tu d'où ça peut venir ?

Dans l'attente de te lire.

re,

Hum je ne vois pas bien ton pb. As-tu bien le même fichier que celui posté ici ?

Fais un essai en enlevant "Call EliminerDoublons" en bas de la macro Recapdevis.

A te relire

Dan

Bonjour,

J'ai enlevé ce que tu m'as demandé mais, rien n'y fait.

Bizarre.

A ne plus rien comprendre (déjà que je n'y connais en VBA mais là encore pire)

Merci quand même pour ton aide.

Par ailleurs, j'aurai d'autres questions à te poser : puis-je ?

Re,

Faudra résoudre ce pb.

Par ailleurs, j'aurai d'autres questions à te poser : puis-je ?

Bien sûr.

Dan

1° ) Dans mon devis (onglet MODELE), si j'ai plus d'articles à mettre, j'insère des lignes.

De ce fait, mes totaux changent de ligne (normal)

Mais le problème, c'est que dans mon tableau récapitulatif (RecapDevis), la colonne où le montant H.T. (après remise déduite) ne retrouve plus celui-ci (normal, il n'est plus à la même place).

2°) Si j'ai déjà fait un devis et, que je désire le modifier, puis-je le rappeler via mon tableau récapitulatif (onglet RecapDevis), faire les modifications à apporter et, lorsque je l'enregistre, il garde bien entendu le même n° de devis et, les modifications (montant H.T. après remise déduite) se modifient également dans mon tableau récapitulatif ?

3°) Y a t'il possibilité que l'onglet lors de l'enregistrement, porte un autre nom que BASE DE DONNEES POUR DEVIS ?

Dans l'attente de te lire.

A l'avance, MERCIIIIIIIIIIIIIIIII

Re,

...la colonne où le montant H.T. (après remise déduite) ne retrouve plus celui-ci...

Et oui, je savais que tu allais venir sur cette question...

Fais ceci :

  • Dans la feuille Modele, positionne toi sur la cellule du Total devant être archivé dans la feuilel Recap
  • Vas dans Insertion / Nom / définir
  • Dans la rubrique "nom du classeur", tape TOTALHT puis OK.
  • Vas dans la macro RECAPDEVIS et remplace --> .Cells(ligne, 7) = Sheets(feuilleactive).Range("F30") par --> .Cells(ligne, 7) = Sheets(feuilleactive).Range("TOTALHT")

Si j'ai déjà fait un devis .... se modifient également dans mon tableau récapitulatif

Oui. Cette option était prévue dans le fichier que tu as repris sur le site. Un lien hypertexte dans la colonne B de la feuille Recapdevis rappelle le devis. Tout cela est à vérifier, bien sûr.

Y a t'il possibilité que l'onglet lors de l'enregistrement, porte un autre nom que BASE DE DONNEES POUR DEVIS ?

Bien sûr, quel nom veux-tu donner à ta feuille. Le fichier que tu as reprit du site donnait le nom DEVIS.

A te relire

Dan

Super pour le TOTALHT !!! Ca marche.

Pour modifier un devis déjà existant, je suis allée rechercher le n° via RecapDevis. Le devis s'affiche bien. Je fais des modifications. Et quand j'enregistre, ça bloque et les modifs ne sont pas reportées sur mon récapdevis.

Je souhaiterais le nom de mon onglet soit nommé par :

Cellules A19 + A21

Est-ce possible ?

Dans l'attente de te lire.

Rechercher des sujets similaires à "lien entre devis validation tableau recapitulatif"