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 :

Macro Taux Augmentation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2008
    Messages : 101
    Par défaut Macro Taux Augmentation
    Bonjour
    Je suis en BTS Informatique de Gestion 1er année, nous devons faire des logiciels pour les entreprises
    Moi je dois faire un logiciel de transport.
    Je possède la liste des Tarifs dans divers tableaux dans excel
    Je voudrais déja commencé par faire une macro qui permettrai une augmentation des prix en pourcentage en indiquant le taux dans une inputbox

    si possible nommer la plage de cellule ex : tarifs

    Je vous remercie pat avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 110
    Par défaut
    salut

    Soit:
    -Colonne A, les tarifs initiaux
    -Colonne B, les tarifs après conversion


    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
     
    Sub pourcentage()
     
    Dim pourcentage As Integer 'variable qui recevra en valeur le pourcentage d'augmentation
    pourcentage = InputBox("Veuillez indiquer le pourcentage d'augmentation du prix.", "Pourcentage d'augmentation du prix")
     
    Dim tarif As Range
    Set tarif = Range("a2:A100") 'déclaration, puis affectation de la zone de tarifs initiaux
     
    For Each cellule In tarif 'pour chaque celluel dans la zone définie
    cellule.Offset(0, 1) = cellule + cellule * (pourcentage / 100)
    'tu multiplies la case à droite du tarif initial par le montant d'augmentation
    Next cellule
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2008
    Messages : 101
    Par défaut
    jai testé l erreur 13 incompatibilité de type
    je peut vous envoyer mon tableau par mail contactez moi

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour. Bienvenue sur nos forums

    Sans boucler, il est possible de créer la formule puis de copier/coller.

    Voici une procédure qui reçoit une plage unicolonne en paramètre, ainsi qu'un taux exprimé en pourcents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Augmentation(Plage As Range, taux As Single)
        ' augmente la valeur de chaque cellule de la plage
        ' du taux renseigné et place la valeur dans la cellule à droite de la cellule d'origine
     
        Plage.Cells(1, 2).Formula = "=" & Plage.Cells(1, 1).Address(0, 0) & "* (1+" & taux & "/100)"
        Plage.Cells(1, 2).Copy Destination:=Range(Plage.Cells(1, 2), Plage.Cells(Plage.Cells.Count)(1, 2))
     
        'Uniquement si on veut figer les valeurs après la copie
        Range(Plage.Cells(1, 2), Plage.Cells(Plage.Cells.Count)(1, 2)).Copy
        Range(Plage.Cells(1, 2), Plage.Cells(Plage.Cells.Count)(1, 2)).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End Sub
    On peut bien sûr ajouter des tests pour vérifier que la colonne est bien unicellulaire...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2008
    Messages : 101
    Par défaut Voila le fichier
    Je vous donne le fichier
    en fait il faut renter un taux d'augmentation dans une inputbox et ce taux va recalculculer tt le contenu des cellules automatiquement
    Merci
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonjour,

    pas besoin du fichier, dis nous plutôt sur qu'elle ligne de code apparait ton erreur .

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut
    Bonjour


    En utilisant Insertion/Noms/Définir pour stocker le taux
    (ici nommé TAUX)

    NB:
    Dans le fichier donné en exemple , il y avait des espaces dans les cellules
    et le séparateur décimal était un point, pas une virgule.
    Pour que le code ci-dessous fonctionne, j'ai du supprimé les espaces
    et remplacé le point par une virgule.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub MACRO_TEST()
    Dim tarifs As Range
    Dim CELLULE As Range
    Taux_Augmentation = _
        Val(InputBox("Saisir le pourcentage d'augmentation."))
    LeTaux = _
        CStr(Replace((Taux_Augmentation / 100), ",", "."))
    ThisWorkbook.Names.Add "TAUX", "=" & LeTaux
    Set tarifs = Range("B8:L101")
    For Each CELLULE In tarifs
    CELLULE = CELLULE * (1 + [TAUX])
    Next
    Set tarifs = Nothing
    End Sub


    J.L

Discussions similaires

  1. Augmenter taille d'une macro-variable?
    Par joyeux_lapin13 dans le forum Macro
    Réponses: 9
    Dernier message: 26/04/2011, 14h58
  2. Macro pour calcul de taux d'incidence
    Par Impactin dans le forum Macro
    Réponses: 0
    Dernier message: 16/06/2010, 12h49
  3. [Toutes versions] macro pour excel : application d'une augmentation annuelle en %
    Par friseb dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/03/2010, 09h13
  4. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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