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 décaler un total


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Par défaut Macro décaler un total
    Bonjour,

    J'ai actuellement un tableau avec un nombre de colonnes fixes que j'alimente avec des données à saisir sur un certain nombre de lignes. Un total étant calculé en toute fin de lignes.

    J'aurais souhaité savoir s'il était possible de décaler le total vers le bas à chaque nouvelle ligne saisie. Je ne sais pas si je suis très clair... ex : 2 lignes de données saisis sur 3 colonnes => totaux en ligne 4. Mais si je commence une nouvelle saisie en ligne 3 alors les totaux se ferait en ligne 5 automatiquement.

    Je suppose que seule une macro est susceptible de pouvoir résoudre mon problème mais j'avoue être totalement novice dans le domaine.

    Merci d'avance pour les réponses que vous pourrez m'apporter.

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonsoir teardrop
    transformez votre tableau en tableau "listobject" avec la ligne des totaux affichée.

    Ajoutez un code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        DerLign = Range("A65000").End(xlUp).Row
        Rows(DerLign & ":" & DerLign).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A" & DerLign).Select
    ESVBA

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut macro decaler un total
    Bonjour Teardrop,

    la réponse de ESVBA pose selon moi problème.

    la proposition, si je la comprend bien, consiste à introduire une ligne vierge avant la ligne total. Si c'est le cas, voila avec un exemple ce qui se passera.

    Soit une formule somme située ligne 10 qui effectue la somme des lignes 1 à 9.
    Si j'introduis une ligne vierge avant la ligne du total, celui-ci sera reporté en ligne 11.
    On continuera cependant à effectuer le total des lignes 1 à 9 et ce faisant une nouvelle donnée dans la ligne vierge 10 ne sera pas prise en compte dans le calcul. et cela vaudra pour toutes les nouvelles entrées.

    il faut:
    - ne jamais avoir de valeurs sur les deux dernières lignes prises en compte dans le total (ligne 8 et 9 dans notre exemple).
    la ligne 8 reçoit les nouvelles données
    la ligne 9 est celle ou on se positionne pour introduire une ligne vierge (et pas sur la ligne de la formule comme l'indique le code).

    Il faut donc changer la ligne 2 du code proposé en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows(DerLign-a & ":" & DerLign-a).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    .

    -(a) étant le nombre de ligne entre la formule et la dernière ligne additionnée (dans notre exemple :1)

    C'est à cette condition que la dernière ligne prise en compte dans le total est incrémentée de 1 à chaque insertion d'une ligne vierge.

    Par ailleurs la ligne 3 du code est superflue car après insertion d'une ligne, la ligne ou cellule active sera la ligne vierge insérée.

    Enfin, si ce code d'insertion intervient, comme c'est probable, après introduction de la nouvelle donnée (ligne 8 dans notre exemple), il est plus simple de poser immédiatement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rows(activecell.row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    à vérifier!

    J'espère avoir été clair et ne pas avoir raconté trop de bêtises.

    cordialement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une ligne insérée dans une aire couverte par une fonction modifie l'aire en question. En clair, si vous avez une formule totalisant A2A3 en A4 et si vous insérez une ligne entre 2 et 3, votre total sera bien en A5 et totalisera A2A4.
    En conclusion, il faut insérer les lignes à l'intérieur des zones couvertes par les formules mais pas à la première ligne, ni à la dernière.


    Autre solution : Mettre la ligne total au dessus de la ligne de titre et adapter les formules pour qu'elles couvrent largement la zone de saisie possible. Avantage : En figeant les volets sous la ligne de titre, on a toujours le résultat devant les yeux, c'est très pratique.

    Cordialement.
    Dernière modification par Invité ; 22/05/2013 à 06h43.

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut macro decaler un total
    bonjour ERIC,

    La première solution a pour inconvénient de ne pas respecter l'ordre des entrées. en effet la dernière entrée se retrouve en avant dernière position.
    c'est pourquoi je proposais de laisser avant le total deux lignes vierges incluses dans la plage à additionner .

    L'autre solution est en effet la plus simple et la plus pratique à l'usage.

    cordialement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour Paul,

    Effectivement tu as raison.

    Généralement pour ma part, cette action s'accompagne d'un tri après coup.

    Cordialement.

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.
    Si ton tableau s'appelle TableauA1, tu peux insérer une ligne comme ceci:

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Not Intersect(Target, Range("TableauA1")) Is Nothing Then
     
            AvantDerniereLigneDuTableau = Range("TableauA1").Row + Range("TableauA1").Rows.Count - 2
     
            If Target.Row = AvantDerniereLigneDuTableau Then
     
                If Cells(Target.Row, Target.Column).Formula <> "" Then
     
                    Call InsererLigne(Target.Row)
     
                End If
            End If
        End If
     
    End Sub
     
    Sub InsererLigne(ligne)
     
        r = ligne & ":" & ligne
        Rows(r).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        r = ligne + 1 & ":" & ligne + 1
        Rows(r).Copy Range("A" & ligne)
        Rows(r).ClearContents
     
    End Sub

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

Discussions similaires

  1. [XL-2003] Création de TCD à partir de Macro ; Error : Objet requis + Total en Somme
    Par Axi91 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/04/2013, 14h50
  2. [XL-2010] Macro pour rechercher et décaler
    Par kayo128 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/02/2012, 16h11
  3. [PPT-2003] Le bouton de ma macro indiquant le temps total de mon diaporama ne marche plus
    Par bolide7 dans le forum VBA PowerPoint
    Réponses: 5
    Dernier message: 09/10/2011, 21h34
  4. Macro somme/sous.total(9;..) automatique avec code couleur
    Par jerem2007 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/07/2009, 19h46
  5. [Etats et Macros] Total intermédiaire
    Par aurelie278 dans le forum IHM
    Réponses: 4
    Dernier message: 22/03/2007, 06h27

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