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 :

Ajouter des colonnes dans une table en mettant des formules dedans [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut Ajouter des colonnes dans une table en mettant des formules dedans
    Bonjour à tous;

    Je travaille sur une base de données qui nécessite beacoup de traitement. Ce que j'aimerais faire, c'est dans un premier temps, de remplacer dans les colonnes (AO, AP, AQ) les points par des virgules. Ensuite, j'aimerais supprimer toutes les lignes de la table pour lesquelles dans la colonne (AQ) il y a des valeurs inferieur à 50000. Ensuite j'aimerais ajouter ( insérer) deux colonnes à partir de la colonne (AQ) sachant qu'il y a plein de colonnes aprés.
    Dans la premiere j'aimerais que ça m'affiche la somme des cellules (AP+AO). et dans la deuxiéme colonne j'aimerais introduire la formule suivante :=SI(ET((AR2=AR1);OU((X2="SWAP");(X2="EXOTIC")));"";AR2).

    Je vous remercie par avance pour votre aide.

    j'ai un code ici si il y a moyen de l'améliorer :



    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
    45
    46
    47
    48
    49
    50
    Sub Macro1()
     
    'Déclaration des variables
    Dim oRng As Range
    Dim i, j, t As Integer
     
    Application.ScreenUpdating = False
    Columns("AO:AQ").Select
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
     
    'Avec "échantillon"
    With Worksheets("EXTRACT")
     
        Set oRng = .Range("AQ1")
     
        'On boucle de i = dernière ligne non vide de la colonne 43 à 1 (décroissant)
        For i = .Cells(.Cells.Rows.Count, 43).End(xlUp).Row - 1 To 1 Step -1
                'Si cette valeur  est < à 50000
                If oRng.Offset(i, 0) < 50000 Then
                    'On supprime la ligne
                    oRng.Offset(i, 0).EntireRow.Delete
                End If
        Next i
        End With
     
        Columns("AR:AR").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("AR1").Select
        ActiveCell.FormulaR1C1 = "PNL1"
        Range("AS1").Select
        ActiveCell.FormulaR1C1 = "PNL2"
        Range("AR2").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-3]"
        Range("AR2").Select
        Selection.FillDown
     
        Range("AS2").Select
     
        ActiveCell.FormulaR1C1 = _
            "=IF(AND((RC[-1]=R[-1]C[-1]),OR((RC[-21]=""SWAP""),(RC[-21]=""EXOTIC""))),"""",RC[-1])"
     
        Range("AS2").Select
        Selection.FillDown
        Application.ScreenUpdating = True
     
    End Sub
    Aussi sur la partie de la supression des lignes, ça dure trop longtenmps, vous aurez une autre idée; le but et de travailler sur les lignes qui ont dans la colonne AQ une valeur supérieure a 50000.


    Cordialement,
    Freudsw

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Essaie :

    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
    Sub Macro1()
     
    'Déclaration des variables
    Dim oRng As Range
    Dim i, j, t As Integer
     
    Application.ScreenUpdating = False
    Columns("AO:AQ").Replace What:=".", Replacement:=","
     
     
    'Avec "échantillon"
    With Worksheets("EXTRACT")
     
        .AutoFilterMode = False
        .[1:1].EntireRow.Insert
        .[AQ1] = "x"
        .Range(.[AQ1], .Cells(.Rows.Count, "AQ").End(xlUp)).AutoFilter 1, "<50000"
        .AutoFilter.Range.Delete
    End With
     
        Columns("AR:AS").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("AR1") = "PNL1"
        Range("AS1") = "PNL2"
        Range("AR2", .Cells(.Rows.Count, "AR").End(xlUp)).FormulaR1C1 = "=RC[-2]+RC[-3]"
     
        Range("AS2", .Cells(.Rows.Count, "AS").End(xlUp)).FormulaR1C1 = _
            "=IF(AND((RC[-1]=R[-1]C[-1]),OR((RC[-21]=""SWAP""),(RC[-21]=""EXOTIC""))),"""",RC[-1])"
     
        Application.ScreenUpdating = True
     
    End Sub

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Aussi sur la partie de la supression des lignes, ça dure trop longtenmps, vous aurez une autre idée
    Fais un filtre automatique et supprime les lignes visibles.

    PS. Évite les Select et Activate


    EDIT: Daniel plus vite

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut Merci pour vos réponses
    Re-bonjour

    j'ai un petit souci par rapport au formule que je veux inserer. elle ne s'applique que sur une seule ligne, or que moi je voudrais que s'effectue sur toute la colonne.

    Une idée ?

    Merci à l'avance pour vos réponses.

    Cordialement,
    Freudsw

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu peux préciser quelle est la formule à appliquer (et à la place de laquelle) ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut Merci pour ta réponse rapide Daniel
    Re

    La formule que je voudrais appliquer est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET((AR2=AR1);OU((X2="SWAP");(X2="EXOTIC");(X2="BOND")));"";AR2)
    Et comme tu peux le constater, je voudrais l'appliquer sur toutes les cellules de la colonne AS.


    Merci encore,

    Cordialement,
    Freudsw

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Fais attention que tu as déjà une formule en colonne R et que là, tu remplacec les cellules par la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("AR2", .Cells(.Rows.Count, "AR").End(xlUp)).FormulaR1C1 = _
            "=IF(AND((RC[43]=R[-1]C[43]),OR((RC[23]=""SWAP""),(RC[23]=""EXOTIC""),(RC[23]=""BOND""))),"""",RC[43])"

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

Discussions similaires

  1. [WD11] comment inserer automatiquement des colonnes dans une table
    Par incomparable dans le forum WinDev
    Réponses: 3
    Dernier message: 31/08/2009, 13h51
  2. [WD10-WD12] Insérer des colonnes dans une table
    Par Amanck dans le forum WinDev
    Réponses: 6
    Dernier message: 18/07/2008, 10h23
  3. Réponses: 2
    Dernier message: 06/06/2008, 17h18
  4. Ordre des colonnes dans une table
    Par c.langlet dans le forum Administration
    Réponses: 3
    Dernier message: 16/05/2007, 18h39
  5. Réponses: 1
    Dernier message: 22/12/2005, 09h03

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