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 :

Diviser par le nombre d'occurence [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Diviser par le nombre d'occurence
    Bonjour la communauté,
    Je me tourne vers vous car je galère depuis quelques jours sur une de mes macros.
    Je souhaite qu'a chaque valeur trouvée que la macro fait une comparaison. Au final on devrait pour l'insertion Orders
    "2019-02 - Television - CRV Hybrid - Mob. + tab. - Vid. pre-roll - VTR" et Vendor Name "DBM" on devrait avoir 15 occurence. Ce qui fait qu'on obtiendrait 1333,33.
    Les valeurs que j'ai en colonne D c'est ce que je voudrai avoir.

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aba2s Voir le message
    Bonjour,

    Pourquoi utiliser une macro ?
    Pièce jointe 456969

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Diviser par le nombre d'occurence
    Bonjour Eric,
    Merci beaucoup d'avoir répondu. Elle est très impressionnante ta fonction SommeProd. Je ne l'avias jamais utilisé
    Elle aurait tout résolu mais malheureusement dans le cadre de ce projet une macro serait l'ideale. La macro est appelé dans d'autres marcos.
    Si nous utilisons une fonction, à chaque nouvelle fichier que nous importons la formule sera perdue.
    Mais je suis très content d'avoir appris l'utilisation de la fonction SommeProd.

    Je remets ici le fichier car dans l'ancien il y avait deux doublons dans la feuille Info.

    Merci beaucoup
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aba2s Voir le message
    Si nous utilisons une fonction, à chaque nouvelle fichier que nous importons la formule sera perdue.
    En utilisant l'enregistreur de macro, rentrez dans les cellules K2 et L2, faites entrer et terminez la macro.
    En adaptant et généralisant le code récupéré, vous pourriez reconstituer votre tableau avec ce code :

    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 MettreEnPlaceLesFormules()
     
    Dim DerniereLigne As Long
     
        With Sheets("Info")
             DerniereLigne = .Cells(.Rows.Count, 8).End(xlUp).Row
             With .Range(.Cells(2, 11), .Cells(DerniereLigne, 11))
                  .FormulaR1C1 = "=SUMPRODUCT((Source!R2C10:R10000C10=Info!RC[-3])*(Source!R2C12:R10000C12=Info!RC[-1]))"
                  .Offset(0, 1).FormulaR1C1 = "=RC[-3]/RC[-1]"
             End With
        End With
     
    End Sub
    Si les valeurs doivent ensuite servir dans d'autres parties du code, vous avez la solution de les mettre dans une matrice.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Diviser par le nombre d'occurence
    Merci Eric,
    Quelqu'un vient poster une macro dans un autre forum (que j'ai un tout petit adapté) qui marche très bien
    Merci pour ton aide.

    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
    34
    35
    36
    37
    Sub TrendDSP_Bis()
     
    Dim FeInfo As Worksheet
        Set FeInfo = Worksheets("Info")
    Dim TabInfo() As Variant
    Set evn = FeInfo.Cells.Find(what:="Vendor Name") 'entete Vendor
     
    TabInfo = FeInfo.Range(FeInfo.Cells(2, evn.Column), FeInfo.Cells(FeInfo.Cells(1048576, evn.Column).End(xlUp).Row, evn.Column + 2))
    ReDim Preserve TabInfo(LBound(TabInfo, 1) To UBound(TabInfo, 1), LBound(TabInfo, 2) To (UBound(TabInfo, 2) + 1))
     
    Dim FeSource As Worksheet
        Set FeSource = Worksheets("Source")
    Dim TabSource() As Variant
    Set evnS = FeSource.Cells.Find(what:="Vendor Name")
     
    TabSource = FeSource.Range(FeSource.Cells(2, evnS.Column - 1), FeSource.Cells(FeSource.Cells(1048576, evnS.Column - 1).End(xlUp).Row, evnS.Column + 2))
    ReDim Preserve TabSource(LBound(TabSource, 1) To UBound(TabSource, 1), LBound(TabSource, 2) To (UBound(TabSource, 2) + 1))
     
     
    For i = LBound(TabInfo, 1) To UBound(TabInfo, 1)
        For j = LBound(TabSource, 1) To UBound(TabSource, 1)
            If TabInfo(i, 1) & TabInfo(i, 3) = TabSource(j, 2) & TabSource(j, 4) Then
                TabInfo(i, 4) = TabInfo(i, 4) + 1
            End If
        Next j
    Next i
     
    For i = LBound(TabInfo, 1) To UBound(TabInfo, 1)
        For j = LBound(TabSource, 1) To UBound(TabSource, 1)
            If TabInfo(i, 1) & TabInfo(i, 3) = TabSource(j, 2) & TabSource(j, 4) Then
                TabSource(j, 5) = "=" & TabInfo(i, 2) & "/" & TabInfo(i, 4)
            End If
        Next j
    Next i
     
    FeSource.Range("D2").Resize(UBound(TabSource, 1), 1).Value = Application.Index(TabSource, , 5)
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Division d'un montant par un nombre d'occurences ?
    Par jp_____ dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 09/12/2016, 10h32
  2. Compte de nombres divisibles par certains nombres premiers
    Par Orhleil dans le forum Mathématiques
    Réponses: 22
    Dernier message: 28/04/2014, 00h31
  3. ACP inertie divisée par le nombre d'individus
    Par takout dans le forum Méthodes exploratoires
    Réponses: 0
    Dernier message: 11/02/2013, 14h53
  4. Division par un nombre
    Par Christinita dans le forum MATLAB
    Réponses: 12
    Dernier message: 03/12/2008, 09h53
  5. Nombre d'occurence d'un motif par ligne
    Par anne-so dans le forum Langage
    Réponses: 8
    Dernier message: 22/08/2005, 19h36

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