Modifier journal devis suite à modification d'un devis déjà crée

Bonjour

Je souhaite réactualiser et mettre à jour mon journal devis ( H.T T.V.A. T.T.C ACOMPTE) suite à une modification d'un devis déjà validé mais non parti en fabrication.

Je vous joint deux fichiers pour explication.

Le seul à ouvrir est MENU1.

Ensuite cliquer sur la macro VALIDER CE DEVIS. Cela validera le client 27.

Va s'ouvrir un autre dossier et ma demande se trouvera sur le dernier onglet "CE QUE JE SOUHAITE"

En vous remerciant pour votre aide.

Bien cordialement.

65menu1.xlsm (39.36 Ko)
57sauve-devis1.xlsm (91.39 Ko)

Bonjour,

1. Vous pouvez faire cela en dessinant un bouton "Modifier" sur votre feuille ZCOPY_DEVIS et en lui associant le code "Modifier" ci-dessous

A chaque création de nouvelle feuille client, le bouton Modifier sera présent et vous permettra de corriger le devis existant

Sub Modifier()
Dim Lig As Integer

With Sheets("ZRECAP_DEVIS")
    Lig = .ListObjects("Tableau1").ListColumns(1).DataBodyRange.Find(ActiveSheet.Range("D10"), LookIn:=xlValues, lookat:=xlWhole).Row

    With .ListObjects("Tableau1")
        .DataBodyRange.Item(Lig - 6, 4) = ActiveSheet.Range("I11").Value
        .DataBodyRange.Item(Lig - 6, 5) = ActiveSheet.Range("I9").Value
        .DataBodyRange.Item(Lig - 6, 6) = ActiveSheet.Range("I10").Value
        .DataBodyRange.Item(Lig - 6, 7) = ActiveSheet.Range("I12").Value
    End With
End With
End Sub

Remarque : attention que vous devez renommer Tableau9 en Tableau1 dans le gestionnaire de noms

2. J'ai amendé votre code Valider qui devient plus court et sans utiliser des Select ou Copy Paste :

Sub VALIDER_DEVIS()
' VALIDER_DEVIS Macro
'
Dim wkbk2 As Workbook
Dim cheminwkbk2 As String

'Set wkbk2 = ThisWorkbook
ThisWorkbook.Sheets("Devis").Unprotect

cheminwkbk2 = ThisWorkbook.Path & "/" & "SAUVE DEVIS1" & ".xlsm"
Workbooks.Open cheminwkbk2
Set wkbk2 = ActiveWorkbook

wkbk2.Sheets("ZCOPY_DEVIS").Range("A1:I600").ClearContents

With wkbk2
    ThisWorkbook.Sheets("DEVIS").Range("A1:I600").Copy .Sheets("ZCOPY_DEVIS").Range("A1")
    .Sheets("ZCOPY_DEVIS").Range("C10") = .Sheets("ZCOPY_DEVIS").Range("O3")
    'COPIE LE MOT DEVIS
    With .Sheets("ZRECAP_DEVIS")
        .Unprotect
        .Range("D10") = .Range("A6")
        .Rows("7:7").EntireRow.Insert 'INSERT UNE LIGNE DANS LE JOURNAL DE RECAPITULATION DEVIS
        .Range("A6").Copy
        .Range("B7").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        .Range("C7") = Sheets("ZCOPY_DEVIS").Range("C4").Value 'NOM CLIENT
        .Range("D7") = Sheets("ZCOPY_DEVIS").Range("E2") 'DATE
        .Range("E7") = Sheets("ZCOPY_DEVIS").Range("I11") 'ACOMPTE
        .Range("F7") = Sheets("ZCOPY_DEVIS").Range("I9") 'HORS TAXE
        .Range("G7") = Sheets("ZCOPY_DEVIS").Range("I10") 'TVA
        .Range("H7") = Sheets("ZCOPY_DEVIS").Range("I12") 'TTC
    End With

    With .Sheets("ZCOPY_DEVIS")
        NxNom = .Cells(4, "c").Value & "_" & .Cells(10, "d").Value
        .Copy Before:=Sheets(1)
         Sheets("ZCOPY_DEVIS (2)").Name = NxNom
    End With

End With
End Sub

Crdlt

Bonjour

En vous remerciant pour votre travail effectué et avec quelle rapidité

QUE DU BONHEUR MERVEILLEUX

UN GRAND MERCI.

J'ai juste ajouter le n° du devis, mais pas de soucis pour le faire.

Encore merci. SUPER

Bonjour Dan

Ce que vous m'avez fait c'est super.

Merci encore.

Mes connaissances et compétences sont très limités en VBA mais cela m'intéresse d'apprendre, pouvez vous m'expliquer deux choses:

1) Pourquoi dans la deuxième macro, je suis obligé de changer le tableau 9 en 1. Pour moi, à partir du moment qu'un numéro est attribué, que ce soit n'importe lequel, cela doit fonctionner.

2) En ce qui concerne la première macro, j'ai voulu compléter mon classeur en m'inspirant de votre base.

Je vous joint le dossier ou cela me pose des problèmes (même sur les lignes du dessous car lorsque je met " ' " sur la première erreur, cela ne passe pas non plus sur les lignes du dessous.

Merci si vous pouvez m'expliquer.

Bonne journée

17dan.xlsm (184.89 Ko)

Bonjour

1) Pourquoi dans la deuxième macro, je suis obligé de changer le tableau 9 en 1. Pour moi, à partir du moment qu'un numéro est attribué, que ce soit n'importe lequel, cela doit fonctionner.

Oui. Mais vous pouvez laisser Tableau9. Je l'ai changé en Tableau1 pour une question de logique (on commence à compter par 1 hein ... ) et que dans votre fichier il n'y avait que Tableau9. Mon conseil car il était plus pratique de corriger dans le gestionnaire de noms que d'aller le faire dans le code.

2) En ce qui concerne la première macro, j'ai voulu compléter mon classeur en m'inspirant de votre base.

Je vais voir pour ce point

re

Pour le point 2,

merci pour la photo dans le fichier mais ce n'est pas le code que je vous ai donné... ou vous changez quelque chose ?

Vous devez enlever le END WITH qui se trouve trois lignes plus haut

Re

Je vous joint le fichier ou je plante.

Merci pour l'explication du tableau.

Mais dans ce classeur j'avais d'autres tableaux que je ne vous ai pas mis

Merci de regarder où cela bloque.

Bien cordialement.

12menu1.xlsm (38.02 Ko)
14sauve-devis1.xlsm (54.69 Ko)

Re

Vous copiez depuis la feuille Devis vers la feuille Zclient dans le même fichier ?

ici dans cette ligne

.Sheets("DEVIS").Range("O4") = .Sheets("ZCLIENT").Range("E14") 'COPIE LE NOM DU CLIENT

Edit :

1. Enlevez cette ligne

ThisWorkbook.Sheets("devis").Activate

et modifiez la ligne juste en dessous

ThisWorkbook.Sheets("DEVIS").Range("O4") = ThisWorkbook.Sheets("ZCLIENT").Range("E14") 'COPIE LE NOM DU CLIENT

2. Plus bas vous avez une ligne Range("D7"), cela correspond à quel fichier et feuille ?

3. Plus bas la ligne ThisWorkbook.Sheets("sauve Devis").Activate ne sert à rien. Vous pouvez supprimer

Bonjour Dan,

Un grand merci pour ces explications. Elle me sont très utiles pour comprendre le fonctionnement et le pourquoi.

Merci encore. Maintenant cela fonctionne.

Concernant la cellule D17 elle correspond au fichier ZRECAP_DEVIS.

Lorsque la date du devis est du 1/3/2021 soit le 1er mars 2021, sur ZRECAP_DEVIS la date reportée est le 3/1/2021 soit le trois janvier 2021.

Lorsque l'on se positionne sur la date en D7 sur ZRECAP_DEVIS que je fais dans la barre du haut, accueil police et nombre, l'on arrive directement sur personnalisée m/j/aaaa

J'y ai remédié en incorporant cette fonction.

Range("D7").Select
Selection.NumberFormat = "m/d/yyyy"

Ce qui n'est absolument pas un problème pour moi.

Encore un grand MERCI

Bien cordialement.

Alain

Bonjour

Lorsque l'on se positionne sur la date en D7 sur ZRECAP_DEVIS que je fais dans la barre du haut, accueil police et nombre, l'on arrive directement sur personnalisée m/j/aaaa

J'y ai remédié en incorporant cette fonction.

Vous pouvez alors modifier simplement cette ligne dans le code

.Range("D7") = Format(Sheets("ZCOPY_DEVIS").Range("E2"), "m/d/yyyy") 'DATE

A vérifier mais en principe si vous formatez manuellement D7 avant d'utiliser les codes, je pense qu'il n'y a plus besoin.

Cordialement

Re

A vérifier mais en principe si vous formatez manuellement D7 avant d'utiliser les codes, je pense qu'il n'y a plus besoin

Avant de mettre ma fonction, j'ai essayé, moi aussi, votre proposition du dessus, mais cela n'a eu aucune incidence sur le résultat.

En revanche je vais adapter ( merci) votre solution et supprimer la mienne.

Bonne continuation.

Bien cordialement

Bonjour Dan,

Je reviens vers vous pour une modification qui me rendrait service si vous savez faire.

Il faut ouvrir le dossier "sauve facture1"

et cliquer sur le bouton rouge "IMPRIMER FACTURE" et à la fin de la macro, je vous ai mis les explications.

En vous remerciant.

Bonne réception.

Bien cordialement.

13sauve-factures1.xlsm (241.74 Ko)
11sauve-devis1.xlsm (48.62 Ko)

Bonjour,

Je suppose que ce ne sont pas vos fichiers originaux puisque vous avez mis un indice 1 dans le nom ?

Autre question : je voudrais comprendre pourquoi vous ouvrez Facture 1 dans le code alors que vous lancez la macro depuis ce même fichier.

Crdlt

Bonjour Dan

Question 1

Effectivement c'est une partie des copies de macros de mon original. J'ai éliminé toutes les autres fonctions superflues.

Question 2

Je ne peux pas vous répondre

J'essaye de bidouiller, de "pomper" et si cela fonctionne, je ne me pose pas trop de question.

De ce que je fais, il y a peut être des solutions plus rationnelles mais, mes connaissances en vba sont relativement simplistes.

Bonne réception.

Pas facile de comprendre comment vous fonctionnez

Dans ZRECAP_DEVIS Il faut tenir compte de la ligne qui concerne le n° du devis en feuille ESSAI_12353 ?
Cette question car je suppose que vous ne copiez pas toujours en ligne 7

En m'excusant mais j'ai du m'absenter,

Oui, tout à fait.

Lorsque ma facture partielle est faite, je met à jour, avec une nouvelle ligne, mon journal facture avec cette nouvelle facture qui se positionne toujours en ligne 7 avec en colonne D le N° du devis client. Je ne rencontre pas de problème pour mettre le n° du devis de cette facture car c'est toujours en ligne 7 et en colonne D.

Pour la suite, c'est plus compliqué pour moi

Ce que je cherche à faire, c'est de reprendre le devis du client (à savoir dans le cas présent le N°12353) mais qui est situé sur n'importe quelle ligne dans ZRECAP_DEVIS.

Je cherche à coller dans ZRECAP_DEVIS en colonne D le N° de la facture qui est dans ZFACTURE_A_IMPRIMER en D10.

Revenir sur l'onglet du client qui est toujours situé en FEUILLE1 et mettre à jour dans ZRECAP_DEVIS le nouveau HT ACOMPTE TVA ET TTC de ce client.

Si j'ai une DEUXIEME facture partielle, je copie le nouveau numéro de facture de ZFACTURE_A_IMPRIMER que je met en colonne E puisque la colonne D est prise par la PREMIERE facture partielle et remet à jour mon ZRECAP_DEVIS en reprenant les données de la sheets(1) à savoir HT TVA TTC ACOMPTE

La colonne F est pour la dernière facture du solde de ce devis. Si jamais j'avais le cas d'une troisième facture partielle, en cours d'année je rajouterais une colonne.

Si la réalisation des travaux est effectué en totalité, je peux donc facturer en totalité ce devis. Je n'aurais donc que la colonne D de remplie (E et F vide) et le HT TVA TTC et ACOMPTE seront à ZERO.

Vous m'avez fait une fonction super (voir plus haut) lorsque je modifie un devis qui fonctionne très bien et qui me donne satisfaction.

J'ai essayé de pomper cette fonction, me suis pris le chou en bidouillant et n'y arrive pas.

Bonne réception.

Ce que je cherche à faire, c'est de reprendre le devis du client (à savoir dans le cas présent le N°12353) mais qui est situé sur n'importe quelle ligne dans ZRECAP_DEVIS.

Mais la feuille Essai_12353 ne renseigne pas le même numéro de devis en D10.

Autres questions :
- dans la feuille ZRECAP_FACTURES, cela correspond à quoi la formule en B6 ??
- votre fichier "sauve facture" que vous avez posté est votre vrai fichier ?

EDIT --> Pourquoi vous ouvrez un deuxième fil ???? https://forum.excel-pratique.com/excel/decaler-d-une-colonne-lorsque-la-cellule-de-la-ligne-a-1-1611...

1) Mais la feuille Essai_12353 ne renseigne pas le même numéro de devis en D10.

Exact. C'est par ce que j'ai tartouillé et j'ai omis de vous remettre le bon N°

Dans la pratique l'onglet reprend bien le nom du client et le n° du devis.

Dans le cas présent ce qui faut c'est que le N° du devis soit bien le même dans la colonne C de ZRECAP_DEVIS pour effectuer la recherche du client.

Vous pouvez vous même changer le N° devis client en d10 dans l'onglet ESSAI_12353 et mettre ce même numéro dans la colonne C de ZRECAP_DEVIS et sur une autre macro en ma possession grâce à celle que vous m'avez faite parvenir cela fonctionne

2) Dans la feuille ZRECAP_FACTURES, cela correspond à quoi la formule en B6 ??

=NBVAL(C:C)+12345

c'est avec cette formule que j'incrémente mes n° de devis ou facture.
Vous avez la même formule en ZRECAP_FACTURES.

Je peux mettre 1 pour janvier suivit de 001
Ce qui donnera 10001 première facture ou devis de janvier. Ce qui me donne la possibilité de faire 999 factures ou devis dans un mois.
Ce que je peux faire aussi c'est mettre 1 pour le mois suivit d'1 pour devis ou 2 pour facture et 001
ce qui donne 101001 mois de janvier devis N°1
ou 121163 soit 163 ème devis de décembre
ou en facture 112327 327 ème facture de Novembre

Vous pouvez changer ce numéro dans ZRECAP_FACTURES en laissant bien le + et mettre les chiffres que vous voulez et cela s'incrémentera sur la nouvelle facture faite en effectuant la macro.
Le numéro que vous mettrait sera celui-ci + toutes les factures faites dans ZRECAP_FACTURES.

Je change ce numéro tout les début de mois après SAUVEGARDE et une remise à zéro de ma feuille ZRECAP_FACTURE.

3) votre fichier "sauve facture" que vous avez posté est votre vrai fichier ?

oui, le classeur "sauve facture" est mon vrai fichier. Je n'ai dedans que ces deux onglets.

Bonne réception.

Je suis obligé de m'absenter deux heures et demie trois heures.

Bonne réception.

=NBVAL(C:C)+12345

Je peux mettre 1 pour janvier suivit de 001Ce qui donnera 10001 première facture ou devis de janvier.
Ce qui me donne la possibilité de faire 999 factures ou devis dans un mois.
Ce que je peux faire aussi c'est mettre 1 pour le mois suivit d'1 pour devis ou 2 pour facture et 001ce qui donne 101001 mois de janvier devis N°1ou 121163 soit 163 ème devis de décembre ou en facture 112327 327 ème facture de Novembre

Je n'ai pas trop compris la logique.

Dans votre fichier devis posté :
- Le mois est Decembre --> 12
- Le nombre de devis est 345
- le code Devis est 1

Le numéro de devis devrait être 121345 non ?

dans votre fichier Facture le mois est Octobre et vous avez votre facture qui commence par 12 puis 34567. Cela ne devrait pas être 10234567 le premier numéro ?
10 pour octobre, 2 pour facture, 34567 pour la 34567ieme facture ?

Simple question parce que je voulais introduire cela dans le code mais je pense que je devrais laisser tomber.

Rechercher des sujets similaires à "modifier journal devis suite modification deja cree"