Coup de main / Macro

Bonjour à tous et à toutes,

Je viens à nouveau solliciter votre aide concernant une petite macro.

Le but étant de copier uniquement les cellules remplies d'une plage ( Recap! C2:C13 ) au sein d'un courrier (courrier! B31:B35 ).

La macro se lance via un bouton situé sur la feuille Recap.

Quelques infos supplémentaires sur le fichier en question.

https://www.excel-pratique.com/~files/doc/Cas_booking_AR_auto_modif.xls

En vous remerciant d'avance,

Cordialement,

//_Syon_\\

Edit : Une macro est déjà rattacher au bouton, mais n'offre pas le résultat voulu.

Bonsoir,

Pourquoi ne pas continuer sur ton fil précédent ?

même sujet

https://forum.excel-pratique.com/viewtopic.php?p=45833&highlight=#45833

Que c'est-il passé, tu est revenu en arrière ?

amicalement

Claude.

Re,

Ton fichier adapté :

https://www.excel-pratique.com/~files/doc/Syon.xls

amicalement

Claude.

Bonjour Claude,

Effectivement je suis revenu en arrière car on m'a imposé de nouvelles contraintes depuis. Notamment celle de ne pas modifier les libellés des conditions de paiement de la feuille Donnee.

D'où l'utilité des colonnes A & B de la feuille Recap en fait, tu remarqueras que sur le fichier joint de mon premier post, les libellés d'origine de la feuille Donne sont " prct_commande ; prct_ livraison etc " et je me vois mal mettre des abréviations pareilles dans un courrier.

Pour résumé la feuille Recap :

  • la colonne A reprend les taux supérieur à 0 de la feuille Donne
  • la colonne B lui donne un libellé " plus littéraire" que des abréviations
  • la colonne C concatenne A & B

But de la macro : Copier uniquement les cellules remplis de la colonne C de Recap ( donc taux + libellé correctement écrit ) dans le courrier.

En espérant avoir était clair et te remerciant à nouveau,

Cordialement

//_Syon_\\

Bonjour,

C'est ce que fait le dernier fichier que je t'ai joint !

les colonnes A et B de la feuille récap ne servent à rien.

si tu préfère "Prtc à %, tu modifie dans "Donnée"

Claude.

si tu préfère "Prtc à %, tu modifie dans "Donnée"

Justement, c'est la nouvelle contrainte que je cite dans mon précédent post.

Pour faire simple, dit toi que les libellés d'origine sont "prct_commande, prct_livraison etc ..." mais que je veux les remplacés par " % à la commande, % à la livraison etc" au sein de mon courrier.

Et c'est là que les colonnes A et B de Recap sont utiles ! Elle copient les taux supérieur à 0 ( colonne A ), insère le libellé rédigé ( colonne B ), et la colonne C concatenne les deux.

Ta macro est juste, mais avec un petit bémol. La colonne C de Recap se rempli en activant la macro, or celle-ci à la base se remplie toute seule avec les fonctions SI.

La macro n'a pas besoin d'etre liée à Donnee, elle doit juste servir à sélectionner les cellules remplies de la colonne C de Recap ( ex: 20% à la commande ) et les copier dans le courrier, toujours sans saut de lignes.

Merci de ton investissement,

Cordialement

//_Syon_\\

bonjour à tous,

Donc la macro n'affecte pas la feuille récap ?

dans ce cas, supprime la ligne :

 'Range("Recap!c15").End(xlUp)(2) = k

il restera :

Sub Ajoute1() 'Claude 21 Nov
Dim N As String
Dim k As String
Dim i As Byte
    Sheets("Donnee").Activate
    Application.ScreenUpdating = False
        Range("courrier!b31:b35").ClearContents
        Range("Recap!c2:c15").ClearContents
        If WorksheetFunction.CountA(Range("b34:b45")) = 0 Then Exit Sub

            Range("b34").Activate
        For i = 1 To 12
                If ActiveCell = "" Or ActiveCell = 0 Then
                    ActiveCell.Offset(1, 0).Select
                  Else
                    k = ActiveCell & " " & ActiveCell.Offset(0, -1)
 '*** Ligne à supprimer **Range("Recap!c15").End(xlUp)(2) = k
                    Range("courrier!b36").End(xlUp)(2) = k
                    ActiveCell.Offset(1, 0).Select
                End If
        Next i
    Sheets("Recap").Activate
End Sub

remets tes formules

Claude.

Donc la macro n'affecte pas la feuille récap ?

Non elle ne l'affecte pas, de plus je vois que la feuille Donnee est pris en compte dans ta macro, mais je doute que ce soit necessaire.

Il est vrai que lors de ma première demande, nous l'avions utilisé mais c'est un tout autre cas ici, à vue d'oeil la macro recherché doit à mon avis être plus simple que celle là.

Comme mentionné plus haut, le seul et unique but de la macro est de copier telles quelles sont les cellules remplies de Recap ( C2:C13) au sein du courrier ( B31:B35) sans saut de lignes.Donc à mon avis, nous n'avons pas besoin de la feuille Donnee pour la création de la macro.

Merci encore,

Cordialement

Syon

re,

Bon, si tu sais faire, vas-y !

n'oublie pas le petit "Résolu"

rrXQbresolu

à+....Claude.

Bon, si tu sais faire, vas-y !

Ben non j'en sais rien x) J'arrive tout juste à comprendre les lignes de ta macro donc bon x)

J'ai repris et modifié une de tes précentes propositions pour avoir ça :

Sub Ajoute()

End Sub

La macro ne plante pas ( ce qui est déjà pas mal x) ) mais ne copie rien du tout, trés certainement incomplète. Tu aurais une idée des modifications à ajouter s'il te plait ?

Cordialement,

Syon

Up

Bonsoir,

remplace le code par celui-ci :

Sub Ajoute()
Dim i As Byte
    Application.ScreenUpdating = False
        Range("courrier!b31:b36").ClearContents
            Range("a2").Activate
    For i = 1 To 12
        If ActiveCell <> "" Then
            ActiveCell.Offset(0, 2).Copy
                With Range("courrier!b36").End(xlUp)(2)
                    .PasteSpecial Paste:=xlValues
                End With
            Application.CutCopyMode = False
        End If
            ActiveCell.Offset(1, 0).Select
    Next i
End Sub

amicalement

Claude.

Tout marche à la perfection, un grand merci et bravo à toi

Rechercher des sujets similaires à "coup main macro"