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 :

Multiplier plusieurs colonnes par une valeur constante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2015
    Messages : 9
    Par défaut Multiplier plusieurs colonnes par une valeur constante
    Bonjour à tous,

    J'aimerai multiplier ma plage de cellule, allant de la colonne H à M jusqu'à la dernière ligne non vide, par une valeur égale à -1. J'ai débuté par une macro mais je n'arrive pas étendre cette macro à plusieurs colonnes, du coup suis obligé de la répéter pour chaque colonne, ce qui est très redondant.

    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
     
        'Inversion signe crédit colonne H à M
        Dim plage As Range, cel As Range
        Set plage = Range("H2:H" & Range("H" & Rows.Count).End(xlUp).Row)
        For Each cel In plage
            cel = cel * -1
        Next
     
        Set plage = Range("I2:I" & Range("I" & Rows.Count).End(xlUp).Row)
        For Each cel In plage
            cel = cel * -1
        Next
     
        Set plage = Range("J2:J" & Range("J" & Rows.Count).End(xlUp).Row)
        For Each cel In plage
            cel = cel * -1
        Next
     
        Set plage = Range("K2:K" & Range("K" & Rows.Count).End(xlUp).Row)
        For Each cel In plage
            cel = cel * -1
     
        Next
        Set plage = Range("L2:L" & Range("L" & Rows.Count).End(xlUp).Row)
        For Each cel In plage
            cel = cel * -1
        Next
     
        Set plage = Range("M2:M" & Range("M" & Rows.Count).End(xlUp).Row)
        For Each cel In plage
            cel = cel * -1
        Next
    Pouvez-vous m'aider SVP?

    Merci à tous

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,
    Et tu sais que cela se fait simplement sans macro..tu copie une cellule contenant -1 et tu effectue un collage special en cochant la case multiplier sur tes cellules de destination?

  3. #3
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2015
    Messages : 9
    Par défaut
    Bonjour, oui je sais bien. Ce bout de code n'est qu'une étape d'une macro lourde qui traite automatiquement un fichier CSV. Donc il me faut utiliser VBA jusqu'au bout.

    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En gardant l'idée de bbil qui est je pense la meilleure solution, prévoir une cellule qui contiendra la valeur constante -1 et que l'on nommera par exemple maConstante?
    Exemple à adapter et qui évite une série de boucles inutiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Range("maConstante").Copy ' Contient la valeur -1
     With ThisWorkbook.Worksheets("Feuil2")
     .Range("B2:H30").PasteSpecial operation:=xlMultiply
     End With
     Application.CutCopyMode = False
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2015
    Messages : 9
    Par défaut
    Bonjour, le nombre de lignes est variable selon le fichier source donc je ne peux pas délimité à l'avance mon "range".

    Merci

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Bonjour, le nombre de lignes est variable selon le fichier source donc je ne peux pas délimité à l'avance mon "range"
    Je me doute bien que c'est variable.
    Pour l'exemple j'ai mis une adresse constante pour ce range mais il suffit de l'adapter avec par exemple la propriété CurrentRegion
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Remplacer une requête sur une class par une valeur constante ?
    Par Lillie CHARLOTTE dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/06/2015, 09h59
  2. Réponses: 2
    Dernier message: 21/07/2009, 16h31
  3. Réponses: 2
    Dernier message: 18/06/2009, 15h09
  4. Réponses: 2
    Dernier message: 20/11/2008, 18h09
  5. Multiplication d'une colonne par une seul valeur
    Par ANTMA dans le forum Excel
    Réponses: 2
    Dernier message: 28/11/2007, 16h33

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