IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modifier une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Commercante
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Commercante
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Modifier une macro
    Bonjour,

    Nous avions fait créer pour notre boutique un fichier excel pour les comptes fidélité de nos clients.
    Nous avons en colonne A B et C les noms, prénoms et adresse mails de nos clients. Ensuite de la colonne D à W nous avons les achats de nos clients présentés ainsi: D et E: achat 1 (D=la date et E=le montant de l'achat), F et G: achat 2... et ainsi de suite jusqu'à V W pour le 10ème achat).
    Une macro a été mise en place avec un bouton "ajouter achat". Cela nous permet une fois que nous avons cliqué sur le nom de notre cliente d'ajouter automatiquement un achat avec la date du jour. Lorsque que les 10 achats sont effectués appuyer une nouvelle fois sur ce bouton permet de basculer tous les achats sur une autre feuille d'archives pour que nous puissions faire le calcul de pourcentage de remise et recommencer un nouveau compte à zéro.
    Nous avions pris l'habitude d'ajouter des commentaires chaque fois qu'un compte était terminé sur la cellule du nom du client pour indiquer le montant de sa remise et si celle-ci a été faite ou non. Malheureusement le trop grand nombre de commentaire à plusieurs fois occasionné un bug et nous avons à chaque fois perdu tous ces commentaires...
    Nous avons donc décidé de procéder différemment et d'ajouter à partir de la colonne X les messages que nous mettions avant en commentaire(X pour la remise de la première carte terminée, Y pour la seconde etc). Seulement un problème se pose: lorsqu'un compte est terminé et lors du passage de tous les achats dans la feuille d'archive nous perdons les messages que nous avions ajouté à partir de la colonne X (et ils ne rebasculent même pas vers la feuille d'archive).
    J'espère que je suis suffisamment claire mais j'aimerais ne pas être obligée d'ajouter notre fichier qui contient les adresses mail et parfois les numéros de téléphone de nos clients.
    Je pense que le problème de toute façon est au niveau de la macro mais je n'y connais pas grand chose et ne sais pas exactement ce qu'il faudrait modifier sans faire de bêtises!
    Voici la macro en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub AjoutAchat()
    Dim MtAchat As Single, MtRemise As Single
    Dim DLigA As Long
    ' Récupérer la ligne de sélection
    Lig = Selection.Row
    ' Mémoriser le nom du client
    NomClt = Range("A" & Lig) & " " & Range("B" & Lig)
    NCol = Cells(Lig, Columns.Count).End(xlToLeft).Column + 1
    ' on récupérer la ligne de sélection
    Lig = Selection.Row
    ' Mémoriser le nom du client
    NomClt = Range("A" & Lig) & " " & Range("B" & Lig)
    NCol = Cells(Lig, Columns.Count).End(xlToLeft).Column + 1
    ' Si la dernière colonne remplie est la 23ème = le client à fait 10 achats
    If NCol > 3 + 20 Then
    MtAchat = Application.WorksheetFunction.SumIf(Range("D2:W2"), "Montant", Range("D" & Lig & ":W" & Lig))
    MtRemise = MtAchat * 10 / 100
    ' Afficher le message
    MsgBox "Le client à droit à 10% de remise" & vbCr _
    & "Montant total achat = " & Format(MtAchat, "#,##0.00") & vbCr _
    & "Remise = " & Format(MtRemise, "#,##0.00"), vbInformation, "REMISE ACCORDEE"
    ' Inscrire le montant sur la ligne
    Range("X" & Lig).Value = Format(Now(), "dd/mm/yyyy")
    Range("Y" & Lig).Value = CDec(MtRemise)
    ' On archive les achats du client
    DLigA = Sheets("Archives").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("BdDClt").Range("A" & Lig & ":Y" & Lig).Copy _
    Destination:=Sheets("Archives").Range("A" & DLigA + 1)
    Range("D" & Lig & ":Y" & Lig).ClearContents
    Else
    UsF_Achat.Show
    End If
    End Sub
    J'imagine qu'il faudrait modifier quelque chose sur la fin, dans cette partie:
    DLigA = Sheets("Archives").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("BdDClt").Range("A" & Lig & ":Y" & Lig).Copy _
    Destination:=Sheets("Archives").Range("A" & DLigA + 1)
    Range("D" & Lig & ":Y" & Lig).ClearContents

    Mais je ne sais vraiment pas comment faire!!
    L'idée serait donc de garder exactement le même fonctionnement qu'avant mais en gardant intacte mes colonnes X, Y, Z AA... une fois les 10 achats effectués.

    Merci infiniment à toute personne susceptible de me venir en aide!

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Commercante
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Commercante
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    Après différents tests je m'aperçois que le problème est légèrement différent de ce que je pensais: Le fais d'avoir ajouter des informations dans les colonnes X et suivantes fait "croire" au fichier que la ligne est finie (en gros que les 10 achats sont faits).
    Donc dès le moment où un client à déjà rempli un compte et que donc on a ajouté des informations après la case du dernier achat; dès que nous ajoutons un nouvel achat tout rebascule vers le dossier d'archive...
    Du coup je joins quand même une version allégée du fichier en question.CarteFidelitefichierforum.xlsm

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Et en plus de l'invite faite par kiki29, que je salue :
    1) nettoie dans la foulée (doublons inutiles de lignes de code). Il en sera plus lisible.
    2) précise clairement si les colonnes considérées des lignes d'achats sont saisies manuellement ou autrement (par code ou formules). La manière de traiter étant en effet différente dans un cas et dans l'autre.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/09/2009, 17h32
  2. [WD-2002] Macro qui modifie une macro
    Par Wanaka dans le forum VBA Word
    Réponses: 2
    Dernier message: 09/05/2009, 10h46
  3. Modifier une macro espion
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 08/07/2008, 17h03
  4. Modifier une macro avec une autre
    Par Teppic dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 04/03/2008, 10h24
  5. Réponses: 5
    Dernier message: 04/01/2007, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo