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

Excel Discussion :

Créer une colonne à partir des autres colonnes [XL-2013]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Créer une colonne à partir des autres colonnes
    Bonjour à tous,

    Je voudrais créer une colonne dont les données sont calculées à partir des autres colonnes. L'entête aussi y compris ...
    J'ai un tableau de 4 colonnes. Je me place sur une cellule quelconque de la première, de la je voudrais selectionner la première cellule de la colonne 5 (qui est vide). Dans cette dernière, je marque le nom de l'entête (RATE). Ensuite, dans la seconde en dessous prend la valeur 0 et dans la troisienne, j'applique la formule qui s'appuis sur la 1ere colonne et la 3ieme colonne.
    Une fois fait, j'applique la formule sur le reste des cellules jusqu'à la dernière .

    J'ai fait un petit code mais qui ne marche et je ne sais trop quoi fait. Merci de bien me porter un petit coup de main.

    Merci d'avance.
    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
     
     
    Sub Bouton2_Cliquer()
    Dim selcel
    Dim Ncol
     
    Ncol = ActiveCell.Column
    Ncol = Ncol + 4
    selcel = Cells(1, Ncol)
    ActiveCell.FormulaR1C1 = "RATE"
    ActiveCell.Offset(0, 1) = "=0"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = _
            "=IF((RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4])>1,(RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4]),0)"
    selcel = ActiveCell.Select
    selcel.AutoFill Destination:=Range(ActiveCell, ActiveCell.End(xlDown)).Select, Type:=xlFillDefault
    End Sub

  2. #2
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Pourrais tu expliquer ta formule stp, personnel je n'ai pas l'habitude de programmer comme ça et je ne comprend pas très bien quelle cellule tu divise par quelle autre cellule

    Sinon j'ai un début de code pour toi, après je ne suis pas sur d'avoir compris toutes tes attentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If ActiveCell.Column = 1 Then
        Cells(1, 5).Value = "Rate"
        Cells(2, 5).Value = 0
    End if
     
    End sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci d'avance pour ton aide !

    Sur le tableau qui se trouve sur figure, la colonne RATE est celle qui doit être créee. Je l'ai fait manuellement pour montrer, la formule est comme la suivante. A2 est mis à 0 comme expliqué précedemment.
    A partir de A3, j'applique :

    - Pour la cellule A3; Si (C3-C2)/(A3-A2)>1 alors A3=(C3-C2)/(A3-A2) sinon A3=0

    - ensuite, j'étend la formule jusqu'à la dernière cellule de cette colonne.

    Nom : Capture.PNG
Affichages : 517
Taille : 27,5 Ko

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Points : 82
    Points
    82
    Par défaut
    Tu peux faire quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With Range("E1")
        .Value = "RATE"
        .Interior.Color = RGB(217, 217, 217) 'Je pense que ça doit être ton gris
        .HorizontalAlignment = xlCenter
    End With
    Range("E2").Value = 0
    Range("E3").FormulaLocal = "=Si((C3-C2)/(A3-A2)>1;(C3-C2)/(A3-A2) ;0)"
    Avec ce code il faut que tu étende la cellule E3 manuellement, je sais pas si c'est ce que tu voulais faire?

    A appliquer ou bon te semble ( Bouton, événement, ...)

    J'espère que cela répond à ta question

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    bazoique, je ne comprends pas du tout ton code.

    Tu commences par mettre la référence à une cellule dans une variable (selcel) qu'ensuite tu n'utilises pas.
    Tu fais modifie des données en te basant sur ActivCell sans avoir activé de cellule dans ton code.
    Tu mets dans une cellule "=0" que tu écrases deux lignes après en y mettant une formule

    Bref, ton code est vraiment bizarre.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Bonjour Menhir

    Excuse pour la reponse tardive, c'est à cause du décalage (au Canada actuellement)!

    je voulais me servir de la variable selcel pour me déplacer vers la première cellule de la colonne 5 (RATE). En effet après avoir reflechi, ça parait bizarre.
    Je voulais juste signaler que ce tableau peut se trouver a n'importe quel endroit sur la feuille, il y a plus d'un tableau.

    LA FIGURE C'EST JUSTE UN EXEMPLE .....

    Merci une fois de plus à tous !

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par bazoique Voir le message
    je voulais me servir de la variable selcel pour me déplacer
    En VBA, il est rare de devoir "se déplacer".
    La plupart du temps, il suffit de donner les référence de la cellule sur laquelle on veut appliquer une action.

    Je voulais juste signaler que ce tableau peut se trouver a n'importe quel endroit sur la feuille, il y a plus d'un tableau.
    Dans ce cas, qu'est-ce qui permet de déterminer sa position ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    En fait ma reference ici, pour un tableau donné c'est l'une des cellules de la première colonne. Une fois sur l'une des cellules, dès que je cliques sur ma macro, je me deplace sur la colonne 5 (qui n'existe pas dans un premier temps) et ensuite le reste suit.

    Merci

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Salut

    La première partie du code, je l'ai testé c-a-d celle qui permet de choisir la première cellule de 5ième colonne. Quel que soit la position, ça arrive a selectionner. Et en ajoutant une partie du code de "gaet76 ", la formule s'applique aussi, il me reste juste à appliquer aux autres cases. Et c'est là que ça cloche.

    voici la partie qui marche

    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
     
    Sub Bouton2_Cliquer()
    Dim Ncol
    Ncol = ActiveCell.Column
    Ncol = Ncol + 4
    Cells(1, Ncol).Select
    With Range(ActiveCell.Address)
        .Value = "RATE"
        .Interior.Color = RGB(217, 217, 217)
        .HorizontalAlignment = xlCenter
    End With
    ActiveCell.Offset(1, 0).Value = 0
    ActiveCell.Offset(2, 0).Select
    ActiveCell.FormulaR1C1 = _
            "=IF((RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4])>1,(RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4]),0)"
     
    'partie qui ne marche pas
    selcel = ActiveCell.Select
    selcel.AutoFill Destination:=Range(ActiveCell, ActiveCell.End(xlDown)).Select, Type:=xlFillDefault
    End Sub

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Tu te compliques trop la vie.

    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
    Sub Bouton2_Cliquer()
     
    Dim Ncol as Integer
    Dim Fin as Long
     
    Ncol = 4 + ActiveCell.Column
    Fin = Cells(Rows.Count,ActiveCell.Column).End(xlUp).Row
     
    With Cells(1, Ncol)
        .Value = "RATE"
        .Interior.Color = RGB(217, 217, 217)
        .HorizontalAlignment = xlCenter
    End With
     
    Cells(2, Ncol).Value = 0
     
    Range(Cells(4, Ncol),Cells(Fin,Ncol)).FormulaR1C1 = _
       "=IF((RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4])>1,(RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4]),0)"
     
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Yes, It's working !


    Merci !

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    ça marche bien, il y avait juste la cellule 3 que ça omettait... J'ai corrigé, il fallait juste mettre 3 dans la dernière ligne au lieu de 4.

    Merci infiniment pour votre aide....

    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
     
    Sub Bouton2_Cliquer()
     
    Dim Ncol as Integer
    Dim Fin as Long
     
    Ncol = 4 + ActiveCell.Column
    Fin = Cells(Rows.Count,ActiveCell.Column).End(xlUp).Row
     
    With Cells(1, Ncol)
        .Value = "RATE"
        .Interior.Color = RGB(217, 217, 217)
        .HorizontalAlignment = xlCenter
    End With
     
    Cells(2, Ncol).Value = 0
     
    Range(Cells(3, Ncol),Cells(Fin,Ncol)).FormulaR1C1 = _
       "=IF((RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4])>1,(RC[-2]-R[-1]C[-2])/(RC[-4]-R[-1]C[-4]),0)"
     
    End Sub

  13. #13
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par bazoique Voir le message
    il y avait juste la cellule 3 que ça omettait
    Dans ton code, tu avais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.Offset(1, 0).Value = 0
    ActiveCell.Offset(2, 0).Select
    Ce qui signifie qu'après la ligne 2 où tu mettais 0, tu sautais 2 ligne. Donc, dans cette logique, il ne devais rien y avoir en ligne 3.
    Mon code suivait ça.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Ah ok !
    Je n'avais pas fait attention..
    Merci pour ton aide !

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

Discussions similaires

  1. Trier une colonne indépendamment des autres colonnes
    Par c.piette dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 23/05/2015, 07h56
  2. Réponses: 0
    Dernier message: 07/11/2013, 15h39
  3. Réponses: 2
    Dernier message: 23/09/2009, 15h40
  4. Créer une liste à partir des noms des feuilles
    Par BOU59000 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/08/2008, 18h38
  5. alimenter une colonne à partir d'autre colonne
    Par fatna dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/07/2008, 09h50

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