XL 2019 Macro mise en forme devis

Reddington

XLDnaute Nouveau
Bonjour le Forum,

Je vous expose mon souci:
Je travaille actuellement sur la mise en place d'un fichier devis.
J'ai une feuille "Chiffrage" sur lequel j'ai mes différentes colonnes pour faire mon chiffrage (jusque la pas de problème)
J'ai ensuite une feuille "Devis" dans lequel j'ai fait une mise en forme et qui contient des renvois et des formules et qui va chercher les valeurs des colonnes de ma feuille "Chiffrage"
J'utilise la macro suivante:



VB:
Sub MacroDevis()
'
'
    Range("B16:M16").Select
    Selection.Copy
    Range("B17:M17").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("Tableau2[[#Headers],[Filtre]]").Select
    ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=12, Criteria1:= _
        "<>"
    ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=12
    Rows("16:16").Select
    Selection.EntireRow.Hidden = True
    ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=12, Criteria1:= _
        "<>"
End Sub

J'ai malheureusement un blocage et je n'arrive pas copier l'ensemble des champs de ma feuille "Chiffrage"

Pourriez vous m'aider a debugger ce code?

En vous remerciant par avance
 

Ikito

XLDnaute Occasionnel
Bonjour,

C'est toujours très pénible de débugguer un code sans utiliser le déboggueur intégré à Excel via F8.
Peux-tu nous envoyer le fichier ? Ainsi nous pourrions réparer ton code et l'optimiser... Les Select sont toujours superflus, par exemple.
 

Reddington

XLDnaute Nouveau
En gros:

- Copier a partir de la ligne 18 de Chiffrage
- Coller a partir de la ligne 10 de Devis
- Pouvoir Incrementer le numéro de ligne dans Devis
- Ne pas coller les lignes avec une quantité a 0 (dans chiffrage) dans Devis

Dans chiffrage, les colonnes utiles sont de A à F. Le reste c pour du calcul

(Je me suis lancé dans ce code en novice de VBA, mais il y a surement plus optimisé)

En te remerciant par avance
 

Pièces jointes

  • DVXXXX_XXXXX_B.xlsm
    769.4 KB · Affichages: 2

Reddington

XLDnaute Nouveau
Merci pour ton retour.

Cela fonctionne.

Mais j'aurais quelques questions:

- Le fichier pourra-t-il servir pour plus de 47 lignes. Cela arrive d'avoir près de 900 lignes a copier avec plusieurs postes (jusqu'a 15)
- Serait-il possible d'avoir une ligne de séparation entre chaque poste pour faciliter la lecture dans le devis. C'est pour cela que j'avais mis un filtre (x) dans la première macro.
- Est-il possible d'affecter la macro a un bouton d'action pour ne pas passer par l'onglet developpeur a chaque fois.

Merci
 

Ikito

XLDnaute Occasionnel
Re,

Oui, c'est possible. Tout est possible.
Une convention ceci dit, juste avant une séparateur (Ligne en bleu avec Poste 1 en gros), il faut que la cellule A de la ligne juste au dessus soit vide.
 

Pièces jointes

  • DVXXXX_XXXXX_A (1) (1).xlsm
    724.9 KB · Affichages: 5

Reddington

XLDnaute Nouveau
Rebonjour le forum, Rebonjour Ikito.

Merci pour ton dernier coup de main. Toutefois, le problème se complexifie un peu. Il faut maintenant que je fasse un copier coller mais avec liaison sur la première feuille.
En effet, souvent il me faut faire quelques modifications a la marge et cela ne reporte pas une fois que le devis a été généré.

Merci pour ton aide
 

Reddington

XLDnaute Nouveau
Bonjour a vous,

J'ai essayé de modifier la macro (en fonction de ma comprehension!!!) mais je n'arrives pas a avoir le resultat escompté:

VB:
Sub Report()

Set ws_chiffrage = Sheets("Chiffrage")
Set ws_devis = Sheets("Devis")

ws_devis.Range("B10:H1000").ClearContents

Compteur = 10
NbLig = 1

For i = 21 To 3000
    If (ws_chiffrage.Cells(i, "B") = "" And ws_chiffrage.Cells(i + 1, "B") = "") Then Exit For
  
  
    If (ws_chiffrage.Cells(i + 1, "F") <> 0 And ws_chiffrage.Cells(i + 1, "F") <> "") Then
        Range(Cells(i, 2), Cells(i, 7)).Select
        Selection.Copy
        Sheets("Devis").Select
        Range("B2").Select
        ActiveSheet.Paste Link:=True
          
        Compteur = Compteur + 1
        NbLig = NbLig + 1
    End If
Next

End Sub

Je souhaite copier les colonnes de A a F de ma feuille chiffrage et les coller avec liaison sur la feuille devis.
Il ne faut copier que les lignes pour lesquelles on a une valeur sur la colonne F.

Le fichier est joint plus haut pour exemple

Merci beaucoup pour votre aide
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa