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 : faire une soustraction rapide de deux colonnes [XL-2003]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    controleur de gestion
    Inscrit en
    Janvier 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : controleur de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 81
    Par défaut VBA : faire une soustraction rapide de deux colonnes
    Bonsoir,

    J'aurais besoin de réaliser un code sur une base de données qui peut être très importante (du style 50 000 lignes). J'ai des sommes sur la colonne D ainsi que sur la colonne E. Je voudrais faire la soustraction D-E sur la colonne F et ce sur chaque ligne.

    Mais il faudrait que VBA applique cette soustraction quelque soit le nombre de lignes, sans toucher à la cellule d’entête "F1" et jusqu'à ce qu'il y ait des valeurs sur la colonne D ou E.

    Avec l'enregistreur de macro et ce que j'ai trouvé sur internet j'ai pu realisé 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
    15
    16
    17
    18
     Application.ScreenUpdating = False
        Columns("D:E").Select
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Columns("F:F").Select
        Selection.Insert Shift:=xlToRight
        Range("F1").Select
        ActiveCell.FormulaR1C1 = "Montant solde"
     Dim lg, i As Long
    With ActiveSheet.Range("D1:E65000")
    lg = .Row + .Rows.Count - 1
    End With
    For i = lg To 2 Step -1
    If Cells(i, "D") <> "" And Cells(i, "E") <> "" Then
    Cells(i, "F").FormulaR1C1 = "=RC[-2]-RC[-1]"
    Next i
    End Sub
    Cela fonctionne pour des bases allant de quelques lignes à quelques milliers. Mais quand la base devient plus important les remplacements et les soustractions sont très très longues à se réaliser, ce qui rend caduque l'utilité de la macro.

    Auriez vous une idée pour que ces actions se fassent beaucoup plus rapidement ?

    En vous remerciant
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [Excel VBA] Faire une condition sous Excel
    Par ANTMA dans le forum Excel
    Réponses: 3
    Dernier message: 03/08/2007, 11h20
  2. Réponses: 19
    Dernier message: 12/04/2007, 15h11
  3. Réponses: 2
    Dernier message: 01/03/2007, 17h04
  4. Faire une procédure stockée avec deux tables
    Par mister3957 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/03/2006, 13h54
  5. [VBA]Faire une pause jusqu'à pression d'1 touche clavier
    Par mainecoon dans le forum Général VBA
    Réponses: 23
    Dernier message: 22/01/2006, 18h08

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