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 :

Suppression resultat boucle suite suppression colonne [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut Suppression resultat boucle suite suppression colonne
    Bonjour,

    Je m'oppose à un souci pour des raisons de traitement j'ai réduit le nombre de données à 6 lignes car sinon j'ai un temps de traitement long pour 2500 lignes

    J'ai effectué une boucle qui effectue la somme de plusieurs colonnes
    puis je demande à ne récupérer que la valeur
    puis je supprime les colonnes qui ne me serve pas.

    Le résultat final me restitue que la valeur de la 6° ligne

    Alors que si je ne mets pas Columns.delete
    Les calculs s'effectuent bien sur toutes les lignes.

    Je suis perplexe sur l'utilisation de Colimns.delete

    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
    Sub AjSup()
    Dim i As Long, j As Long
    Dim Trouve As Boolean
    Dim Wb As Workbook
    Dim Ws As Worksheet
     
    For Each Wb In Application.Workbooks
        If Wb.Name Like "rcv*" Then
            Trouve = True
            Exit For
        End If
    Next Wb
     
    If Trouve Then
        Set Ws = Wb.Worksheets(1)
        i = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row
        With Ws
         For k = 2 To i
        .Range("Q" & k).Value = "=SUM(I" & k & ":P" & k & ")"
        .Range("Q" & k).Value = Ws.Range("Q" & k).Value
        '.Columns("I:O").Delete
         Next k
        End With
        Set Ws = Nothing
        Set Wb = Nothing
    End If
    End Sub
    Anoter qu' après traitement, je dois supprimer toutes les lignes dont le résultat affiche 0 pour Q avant suppression de colonnes ou I après suppression des colonnes

    Si vous aviez également une solution pour raccourcir le temps de traitement de ma macro
    Merci de votre aide

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    essayes ce code (je n'ai pas testé)
    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
    Sub AjSup()
    Dim i As Long
    Dim Wb As Workbook
    Dim Ws As Worksheet
     
    For Each Wb In Application.Workbooks
      If Wb.Name Like "rcv*" Then
        Set Ws = Wb.Worksheets(1)
        i = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row
        With Ws
          .Range("Q" & k).Value = WorksheetFunction.Sum(.Range("I2:P" & i))
          .Range("Q" & k).Value = Ws.Range("Q" & k).Value
          .Columns("I:O").Delete
        End With
        Set Ws = Nothing
        Set Wb = Nothing
      End If
    Next Wb
    Set Ws = Nothing
    Set Wb = Nothing
    End If
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut
    Hélas Non, toujours le même résultat

    Voici le code rectifié

    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
    Sub AjSup()
    Dim i As Long, j As Long
    Dim Trouve As Boolean
    Dim Wb As Workbook
    Dim Ws As Worksheet
     
    For Each Wb In Application.Workbooks
        If Wb.Name Like "rcv*" Then
            Trouve = True
            Exit For
        End If
    Next Wb
     
    If Trouve Then
        Set Ws = Wb.Worksheets(1)
        i = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row
        With Ws
         For k = 2 To i
        .Range("Q" & k).Value = WorksheetFunction.Sum(.Range("i" & k & ":p" & k))
        .Range("Q" & k).Value = Ws.Range("Q" & k).Value
        .Columns("I:P").Delete
         Next k
        End With
        Set Ws = Nothing
        Set Wb = Nothing
    End If
    End Sub

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Avant de mieux te répondre, quand je vois ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Wb In Application.Workbooks
    travailles-tu sur plusieurs classeurs ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut
    Oui effectivement mais il n'y a qu'un seul classeur qui porte le nom de "rcv".

    Mais je suis obligé d'effectuer une For Next car selon l'extraction du requêteur, il a une numérotation qui s'effectue après le mot "rcv"

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Pourquoi .Value plutôt que .Formula ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("Q" & k).Value = "=SUM(I" & k & ":P" & k & ")"
    Une fois toutes tes formules inscrites, tu pourrais faire un copier/coller en valeur de la colonne avant de supprimer celle(s) que tu veux...

    Mais j'ai peut-être manqué quelque chose...(?)

  7. #7
    Membre éclairé
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Mars 2011
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 316
    Par défaut
    Oui tu as raison mais j'avais pensé que en mettant value cela ne ressorté que la valeur et non pas la formule de calcul.
    Et je n'ai pas rectifié après coup.

    Mais même si je change j'ai toujours la même résultante

    Et pour le copier coller c'est ce que j'ai fait non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("Q" & k).Value = Ws.Range("Q" & k).Value

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

Discussions similaires

  1. [XL-2003] Boucle For - Suppression colonne - Erreur '13'
    Par arkhang dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/06/2014, 12h03
  2. Boucle de suppression d'éléments d'une Map
    Par olive_le_malin dans le forum C++
    Réponses: 19
    Dernier message: 28/10/2013, 16h20
  3. Suppression de blancs dans une colonne
    Par DreammyKetty dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2007, 11h28
  4. [VBA-E] Suppression du contenu d'une colonne sans perdre ses formules
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/04/2007, 09h08
  5. Delphi 7 et suppression d'enregistrements (suite).
    Par alainvh dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/05/2006, 14h34

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