Report de devis dans un fichier récapitulatif

Bonjour à tous,

Je suis débutant en VBA et j'ai déjà posté un message pour vous demandez votre aide qui m'a permis de résoudre mon problème en très peu de temps et je vous en remercie.

J'ai pas mal avancé sur le fichier que j'avais à faire grâce à des astuces sur ce forum mais je me retrouve maintenant bloqué...

J'explique mon problème :

  • Le chef d'équipe de mon entreprise remplit le fichier "Devis" comme bon lui semble et il clique sur "Enregistrer et envoyer au client" et ça envoie automatiquement le devis au client concerné ainsi qu'enregistre une copie qui sera archivée selon un chemin précis. Jusque là, j'ai réussi à tout coder et le programme fonctionne à la perfection.
  • Je voudrais faire un suivis des devis qui me permettra de sortir des graphique etc mais pour cela, j'ai besoin que les valeurs de certaines cellules soient mises dans un tableau récapitulatif avec une ligne par devis.
En gros, à chaque nouveau devis, je voudrais que par exemple, pour le premier devis, la cellule M5 du "devis" soit égal à la cellule A7 du "fichier à remplir" etc.

En sachant que le "fichier à remplir" sera dans le même dossier que le fichier "devis".

En espérant avoir été assez clair, je reste disponible si vous avez besoin d'avantages informations ou de précisions.

En vous remerciant du temps que vous me consacrerez.

Cordialement,

Julien.

39devis.zip (17.66 Ko)

Bonjour,

Voici une proposition :

Sub Recapitulatif()
Dim wsRecap As Worksheet, wsSource As Worksheet, ligne As Integer, wb As Workbook

Set wsSource = ActiveSheet

Workbooks.Open wsSource.Path & "\Fichier a remplir.xls"
Set wb = ActiveWorkbook
Set wsRecap = ActiveSheet

ligne = wsRecap.Range("A35000").End(xlUp).Row + 1
'-----------------------AJOUTER UNE LIGNE DE CODE PAR DESTINATION
wsRecap.Cells(ligne, 1) = wsSource.Range("H14") 'date

'-------------------------------------
wb.Close True

End Sub

A tester

Bonjour,

Merci de vous êtres intéressé à mon problème.

Je comprends à peu prêt le code, mais j'aurais juste une question, où est-ce que je dois le copier ? à la suite de mon code "Module 1" ?

Je n'ai pas encore testé car je ne sais pas où je dois le mettre. Je le testerais dés que vous m'aurez éclairé.

Merci d'avance .

Cordialement.

Julien

Tu peux le mettre à la fin de ton module 1.

Après tu peux l’associé à un bouton.

Bonjour,

J'ai essayé votre solution et quand j'exécute ma macro, il y a un rapport d'erreur.

Je ne sais pas comment résoudre ce problème car je débute en VBA, je sais écrire des codes simples, comprends des codes un peu plus compliqué et sais les adapté en fonction de ce que je veux mais résoudre ce genre de problème non...

En vous remerciant.

Cordialement.

Bonjour Kant1, julien

Julien,

essayez de mettre ThisWorkbook.Path à la place de wsSource.Path

Ah oui my bad ( une worksheet n'a pas de chemin) je me suis trompé.

feuil1.Application.DefaultFilePath

Ah je connaissait pas cette commande je me demandais si elle existait. Merci de l'info.

C'est bon ça fonctionne à la perfection.

Je vous remercie d'avoir débloqué la situation .

A une prochaine fois.

Bonjour à tous,

Je me permets d'actualiser ce post étant donné qu'il s'agit presque de la même demande.

J'ai chercher un peu sur le forum pour essayer de trouver une problème qui ressemble au mien mais je n'ai pas trouvé...

Donc mon report fonctionne mais maintenant je voudrais que quand je modifie un devis, cela le modifie également dans mon suivi.

En gros, il faut faire une recherche telle que la cellule D14 du devis soit égale à une cellule de la colonne E du suivi.

Dés qu'on a cette égalité, il n'y a plus qu'à mettre à jour les données dans la ligne du numéro de devis.

Je joints les fichiers qui sont un peu modifier par rapport aux premiers.

En vous remerciant.

Cordialement,

Julien.

17devis-test.zip (26.26 Ko)

J'ai essayé de faire un code mais celui-ci ne fonctionne pas et je ne comprends pas pourquoi :

'Modification du suivi d'activités
    Dim wsRecap As Worksheet, wsSource As Worksheet, ligne As Integer, wb As Workbook, modif As Integer
    Set wsSource = ActiveSheet
    Workbooks.Open "D:\Users\FX5180\Desktop\Période Internationale\Dupont\Devis Dupont\Suivi activités DBS.xls"
    Set wb = ActiveWorkbook
    Set wsRecap = ActiveSheet

    For ligne = wsRecap.Range("E1000").End(xlUp).Row To wsRecap.Range("E2") Step -1
    If wsRecap.Cells(ligne, 5) = wsSource.Range("D14") Then ligne = modif
    wsRecap.Cells(modif, 3).Clear
    wsRecap.Cells(modif, 6).Clear
    wsRecap.Cells(modif, 7).Clear
    wsRecap.Cells(modif, 3) = wsSource.Range("D16") 'Descriptif
    wsRecap.Cells(modif, 6) = wsSource.Range("H14") 'Date de remise du devis
    wsRecap.Cells(modif, 7) = wsSource.Range("I54") 'Montant du devis (HT)
    Next ligne
    wb.Close True

ça bug à partir de "wsRecap.Cells(modif, 3).Clear"

En vous remerciant de la lumière que vous pourrez m'apporter.

Cordialement,

Julien.

Bonjour,

Quelqu'un a-t-il une autre idée car je sèche complétement là...

J'ai essayé avec vlookup mais ça ne donne rien non plus...

En vous remerciant...

Bonjour Julien

Pas très clair tout ça

Voilà comment je vois ton dernier code, à tester

'Modification du suivi d'activités
Dim wsRecap As Worksheet, wsSource As Worksheet, Ligne As Long, wb As Workbook, Modif As Long
Dim sPath As String
' Définir le chemin d'accès
sPath = ThisWorkbook.Path & "\"
'ou en dur, mais attention au changement de dossier
'sPath = "D:\Users\FX5180\Desktop\Période Internationale\Dupont\Devis Dupont\"
'
Set wsSource = ActiveSheet
Workbooks.Open sPath & "Suivi activités DBS.xls"
Set wb = ActiveWorkbook
Set wsRecap = ActiveSheet

For Ligne = wsRecap.Range("E1000").End(xlUp).Row To wsRecap.Range("E2") Step -1
  '
  If wsRecap.Cells(Ligne, 5) = wsSource.Range("D14") Then
    Modif = Ligne
    wsRecap.Cells(Modif, 3) = wsSource.Range("D16")  'Descriptif
    wsRecap.Cells(Modif, 6) = wsSource.Range("H14")  'Date de remise du devis
    wsRecap.Cells(Modif, 7) = wsSource.Range("I54")  'Montant du devis (HT)
  End If
Next Ligne
wb.Close True

A+

Bonjour Bruno,

Tout d'abord merci pour votre aide

Vous avez bien compris ce que je voulais faire, ça fonctionne, votre code modifie bien les cellules dans le suivi mais il y a un message d'erreur :

1439189797-1
1439189805-2

Je ne saurais résoudre moi même ce problème même si je vais quand même essayer...

Une fois de plus merci pour votre aide passée et votre future aide

Cordialement,

Julien.

Bonjour à tous,

C'est bon j'ai réglé mon problème, au niveau du FOR, j'avais mis E2 pour la fin mais c'est E6...

Merci encore Bruno.

Je mets le code au cas où quelqu'un aurait un problème similaire

'Modification du suivi d'activités
    Dim wsRecap As Worksheet, wsSource As Worksheet, Ligne As Long, wb As Workbook, Modif As Long
    Dim sPath As String
    ' Définir le chemin d'accès
    sPath = "D:\Users\FX5180\Desktop\Période Internationale\Dupont\Devis Dupont\"
    'ou en dur, mais attention au changement de dossier
    'sPath = "D:\Users\FX5180\Desktop\Période Internationale\Dupont\Devis Dupont\"
    '
    Set wsSource = ActiveSheet
    Workbooks.Open sPath & "Suivi activités DBS.xls"
    Set wb = ActiveWorkbook
    Set wsRecap = ActiveSheet

    For Ligne = wsRecap.Range("E1000").End(xlUp).Row To wsRecap.Range("E6") Step -1
      '
     If wsRecap.Cells(Ligne, 5) = wsSource.Range("D14") Then
        Modif = Ligne
        wsRecap.Cells(Modif, 3) = wsSource.Range("D16")  'Descriptif
        wsRecap.Cells(Modif, 7) = wsSource.Range("I54")  'Montant du devis (HT)
     End If
    Next Ligne
    wb.Close True
Rechercher des sujets similaires à "report devis fichier recapitulatif"