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 :

Loop through range, on value change, offset + autosum on target range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Commence a apprendre VBA
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Commence a apprendre VBA

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut Loop through range, on value change, offset + autosum on target range
    Bonsoir, bonjour a tous !

    (Desole je suis sur un clavier anglais, c'est pas ideal pour les accents...)
    Merci d'avance a celles et ceux qui prendront le temps de lire, voire d'aider !

    Voila le scenario :
    Considerons quatre colonnes, A, B, C et D
    Les cellules de A portent des series d'identiques valeurs textuelles, les series changent et occupent un nombre de cellules compris entre 1 et 11. (Par exemple, A1 a A6 portent chacune "zw100" ; A7 a A11 portent chacune "zw101" ; A12 a A14 portent chacune "zw107"....
    B est remplie de donnees avec lesquelles je ne souhaite pas interagir.
    C est remplie de nombres ou cellules vides.
    En D je voudrais obtenir, pour chaque serie en A, la somme des nombres (et cellules vides) en C qui correspondent a la serie concernee (pour revenir a mon exemple, je souhaite avoir en D6 la somme de "C1:C6" puisque ma serie "zw100" existe de A1 a A6, puis en D11 je souhaite avoir la somme de "C7:C11" puisque "zw101" occupe A7 a A11, ainsi de suite...

    Note : le nombre de cellules que mes series occupent en A est aleatoire, ceci dit mon fichier ne devrait pas contenir plus de 2000 rows.

    Je voudrais donc avoir un code qui, je crois, loop a travers A:A, quand la valeur textuelle change, procede a un offset et inscrive en D la somme des nombres de C correspondant a la valeur textuelle en A, puis next valeur textuelle et meme operation.

    J'imagine que c'est pas follement clair, pardon, c'est la premiere fois que je demande de l'aide sur ce genre de sujet...

    Merci a nouveau d'avoir pris le temps de lire !
    Fichiers attachés Fichiers attachés

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

    Autrement dit, c'est un tableau croisé dynamique que vous souhaitez :

    Pièce jointe 306575

  3. #3
    Membre à l'essai
    Homme Profil pro
    Commence a apprendre VBA
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Commence a apprendre VBA

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut
    Heu, oui, en effet.

    Il me serait utile de voir un code propre qui construit tel tableau dynamique ceci-dit.
    En general l'enregistreur de macro procede a pas mal d'etapes non utilisees voire inutiles n'est-ce pas ?

    Si une ame charitable se trouve assez patiente pour coder ce genre de tableau dynamique, applique a cet exemple si possible, que j'en comprenne les tenants et aboutissants ! J'entends que ca ne semble pas pertinent au scenario que je presente mais ca pourrait l'etre dans d'autres

    Merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par EhcacommenceVBAhum Voir le message
    Un exemple ici : suppression-re-creation-tcd

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il me serait utile de voir un code propre qui construit tel tableau dynamique...
    Testes et adapte à tes besoins :
    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
    38
    39
    40
    41
    42
    43
    44
     
    Sub TestTCD()
     
        Dim TCD As PivotTable
        Dim Fe As Worksheet
        Dim Plage As Range
        Dim Cel As Range
     
        Set Fe = Worksheets("Sheet1")
     
        Application.ScreenUpdating = False
     
        'suppression du TCD si il existe
        On Error Resume Next
        Set TCD = Fe.PivotTables("MonTCD")
        If Err.Number = 0 Then TCD.TableRange2.Delete
     
        On Error GoTo 0
     
        Set Plage = Fe.Range("A1:C37") 'défini la zone
        Set Cel = Fe.Range("H1") 'cellule point de départ TCD
     
        'création du TCD
        Set TCD = ActiveWorkbook.PivotCaches.Create(1, Plage.Address(, , xlR1C1), 3).CreatePivotTable(Cel.Address(, , xlR1C1), "MonTCD", , 3)
     
        With TCD.PivotFields("ID")
     
            .Orientation = 1
            .Position = 1
     
        End With
     
        With TCD.PivotFields("Seed Count")
     
            .Orientation = 1
            .Position = 2
     
        End With
     
        TCD.AddDataField ActiveSheet.PivotTables("MonTCD").PivotFields("Seed Count"), "Somme de Seed Count", xlSum
     
        Application.ScreenUpdating = True
     
    End Sub
    Petite précision, le TCD est créé sur la même feuille !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Commence a apprendre VBA
    Inscrit en
    Août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Commence a apprendre VBA

    Informations forums :
    Inscription : Août 2017
    Messages : 4
    Par défaut
    Merci beaucoup pour vos reponses, tout ca m'aide beaucoup !
    Je ne presse pas encore "resolu", je n'ai pas encore eu le temps d'essayer ou de jeter un oeil a l'autre exemple propose, je risque bien de revenir a la charge avec une ou deux questions...
    Quoi qu'il en soit, encore un grand merci !

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

Discussions similaires

  1. Datagrid cell value changed
    Par epiouf dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 17/08/2009, 14h04
  2. Réponses: 1
    Dernier message: 12/06/2009, 10h30
  3. out-of-range datetime value
    Par _Eric_ dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/09/2007, 10h24
  4. [VBA-E] Range("C30").Value = 7 fait tout buguer
    Par maatthieu dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/01/2007, 06h45
  5. [C#] DevAge SourceGrid Value Changed
    Par JuJu° dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/05/2006, 22h06

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