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 :

VBA : multiplication plage variable Quantité * CU


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    contrôleur de gestion
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut VBA : multiplication plage variable Quantité * CU
    Bonjour,

    Je cherche à faire une macro qui fait une multiplication sur une plage variable.
    J'ai 3 tableaux :
    1 : en ligne différents services, en colonne différents produits, et à l'intérieur les quantités
    2 : en ligne différents services, en colonne différents produits, et à l'intérieur les coûts unitaires
    3 : en ligne différents services, en colonne différents produits, et à l'intérieur je souhaiterais une macro pour la multiplication Qté * CU

    Hors dans le fichier joint, j'ai mis 4 services hors il peut y en avoir plus et 3 produits hors il peut y en avoir plus.

    Je souhaiterais un bouton pour que la multiplication se fasse toute seule tout en sachant que les différents services seraient à l'identique dans les 3 tableaux.

    N'hésitez pas si vous n'avez pas compris.

    Merci

    Jérôme
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Conformément aux règles du forum, n'envoie de fichier joints, mais explique nous ton problème. Ecris-nous ton code, dis-nous où se situe ton problème. Joins éventuellement des captures d'écrans si nécessaire.
    Néanmoins une idée :
    Est-ce que ton but est de trouver la dernière ligne non vide de ta feuille de calcul? Ou la dernière colonne non vide de ta feuille de calcul?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim derLig As Long
    Dim derCol As Long
    derLig = Sheets("maFeuille").Cells(Rows.Count, 1).End(xlUp).Row
    derCol = Sheets("maFeuille").Cells(1, Columns.Count).End(xlLeft).Column

  3. #3
    Candidat au Club
    Homme Profil pro
    contrôleur de gestion
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut
    Bonjour,
    Dsl je ne mettrais plus de fichier joint.
    Je cherche à avoir la dernière ligne et colonne non vide des tableaux et non de la feuille.

    J'ai trouvé la macro ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim t1 As Range, t2 As Range, t3 As Range, nc As Long, nl As Long
    Set t1 = Range("A:A").Find("Tableau 1")
    Set t2 = Range("A:A").Find("Tableau 2")
    Set t3 = Range("A:A").Find("Tableau 3")
    nc = Cells(t1.Row + 1, Columns.Count).End(xlToLeft).Column - 1 'nombre de colonnes
    nl = t2.Row - t1.Row - 3 'nombre de lignes
    t3.Offset(2, 1).Resize(nl, nc).Formula = "=B" & t1.Row + 2 & "*B" & t2.Row + 2
    Mais la formule ne s'arrête pas au dernier libellé de service. Ya til moyen de faire une modif et si oui laquelle ?

    Merci.

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Pourrais-tu joindre une copie d'écran de ta feuille avec les tableaux afin que nous voyions comment sont organisés tes tableaux, stp?

  5. #5
    Candidat au Club
    Homme Profil pro
    contrôleur de gestion
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Par défaut
    Nom : Capture.PNG
Affichages : 1329
Taille : 17,3 Ko

  6. #6
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,
    Sais-tu qu'il est possible de le faire tout simplement avec la formule SOMMEPROD ou
    avec INDEX EQUIV ??
    Donc pas besoin de vba et il est toujours possible de les appliquer via vba si nécessaire

    Edit : minime changement de texte
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  7. #7
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Ok, c'est un peu plus clair maintenant

    En fait, la question que tu dois te poser c'est : comment je repère mes différents tableaux?
    Si on regarde ta copie d'écran, chacun de tes tabeaux est précédé de son nom sous la forme Tableau n. Et tu sais que la première valeur à considérer (premier service-premier produit) se trouve 2 lignes en dessous et un colonne à droite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim tabl1 As Long
    tabl1 = Application.Match("Tableau 1", Range("A:A"), 0)
    Ceci te permet de connaître la ligne où est écrit "Tableau 1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim premCel1 As Range
    premCel1 = Range("A" & tabl1).Offset(2, 1)
    Ceci te donne la cellule avec la première valeur dans le tableau 1. Offset permet de travailler sur une cellule dont on connait la position relative par rapport à une autre cellule, ici on se décale de 2 lignes et d'1 colonne par rapport à la cellule Atabl1.

    J'imagine qu'il y a le même nombre de produits et de services dans les tableau1 et 2. On va donc compter le nombre de produits et de services :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim prod As Long
    Dim service As Long
    prod = premCel1.End(xlRight).Column - premCel1.Column + 1   'on cherche la cellule juste avant la première cellule vide à droite
    service = premCel1.End(xlDown).Row - premCel1.Row + 1     'on cherche la cellule juste avant la première cellule vide en bas
    Ca y est, on a repéré les tableaux. Il faut faire les multiplications.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim i As Long
    Dim j As Long
    For i = 0 To prod - 1    'boucle sur les colonnes contenant un produit
        For j = 0 To service - 1  'boucle sur les lignes des services
            premCel3.Offset(j, i).Value = premCel1.Offset(j, i).Value * premCel2.Offset(j, i).Value     'on se décale par rapport à la première cellule à prendre en 
                                                                                                                                                       'compte dans le tabelau
        Next j
    Next i
    Est-ce que tu comprends mon raisonnement?

Discussions similaires

  1. [XL-2007] Étendre une formule à l'aide de VBA sur une plage variable
    Par cyril7751 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/07/2012, 16h23
  2. VBA - Graphique avec plage variable
    Par virstyle dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2010, 11h48
  3. vba vlookup plage variable
    Par choupette_64 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2009, 14h19
  4. [VBA-E] COUNTIF sur une sélection de plage variable
    Par NiKoS29 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/09/2007, 23h03
  5. [VBA-E] Macro Pour Faire un Tri sur plage variable
    Par tabarly35 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/09/2006, 19h02

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