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 :

coder une formule par rapport à un tableau.


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut coder une formule par rapport à un tableau.
    Bonjour

    J'ai un tableau de n ligne et 4 colonnes.
    Je veux dans la colonne 3 savoir si la cellule active correspond à une cellule dans un autre tableau.
    Donc je veux faire :
    Si la cellule active se trouve dans le tableau E2 à E15 alors je fais .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      For i = 1 To 41
           If ActiveCell = "........" Then
           .......
     
          Else
          ActiveCell.Cells(2, 1).Select
     
         End If
      Next
    Sinon je passe à la cellule de dessous.
    Comment je peux coder cela ?
    Merci

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    sans VBA :
    =SI(NB.SI($C$1:$C1;C1)>NB.SI($E$1:$E$6;C1);C1;"")

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    avec VBA
    Cel.column dans le cas ou tu cherches dans plus qu'une colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim Plage As Range
    Dim Cel As Range
    Set Plage = Sheets("Feuil1").Range("E2:E15")
    For Each Cel In Plage
    If Cel.Value = ActiveCell.Value Then
    L = Cel.Row
    C = Cel.Column
    MsgBox ("La valeur de la cellule active se trouve en ligne : " & L & "   la colonne est :  " & C)
    End If
    Next Cel
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut
    merci mais cela ne me convient pas.
    La cellule active se trouve en J2
    Je veux vérifier si le contenu de la cellule J2 est dans le tableau E2 à E15.
    Cordialement

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    remplacer activcell par j2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim Plage As Range
    Dim Cel As Range
    Set Plage = Sheets("Feuil1").Range("E2:E15")
    For Each Cel In Plage
    If Cel.Value = Cells(2, "j") Then
    L = Cel.Row
    MsgBox ("La valeur de la cellule active se trouve en ligne : " & L)
    End If
    Next Cel
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut
    Ce n'est pas bon.
    Dans ton cas, CEL = la cellule de mon tableau.
    Moi, je veux que CEL soit la cellule active.

    Je veux que le contenu de J2 se trouve dans le tableau E2 à E15.

    Si la condition est vrai, je vais copier la ligne
    Si la condition est fausse, je vais à la ligne de dessous en J3.
    Cordialement

  7. #7
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    un capture écran des données de départ (non confidentiel) et un exemple pour simuler le résultat souhaité ...personnellement j'arrive pas à comprendre la demande

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut
    Donc je suis en J2.
    Je veux savoir si le contenu de J2 se trouve dans le tableau E2 à E15.
    Non donc je passe à la ligne suivante (J3)
    Si oui, je vais à la cellule B de ma ligne. (ans mon cas B9), et je copie cette ligne pour la mettre en L2
    ainsi de suite
    Cordialement
    Images attachées Images attachées  

  9. #9
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    dans l'exemple la colonne E est vide contrairement à la demande
    à tester
    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
    Sub test()
    Dim Plage As Range
    Dim C As Range
    Dim derligE As Long
    Dim derligJ As Long
    Dim F As Worksheet
    Set F = Sheets("Feuil1")
    derligE = F.Range("E" & Rows.Count).End(xlUp).Row
    derligJ = F.Range("J" & Rows.Count).End(xlUp).Row
    Set Plage = F.Range("J2:J" & derligJ)
    For i = 2 To derligE
    Set C = Plage.Find(F.Cells(i, "E"), LookIn:=xlValues, lookat:=xlWhole)
         If Not C Is Nothing Then F.Cells(i, "L") = F.Cells(C.Row, "B")
    Next i
    End Sub
    Fichiers attachés Fichiers attachés

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur Infrastructures
    Inscrit en
    Septembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Infrastructures
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 39
    Par défaut
    Merci, cela fonctionne bien.
    Cependant je ne veux pas copier une cellule mais 3 cellules
    donc comment coder ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set C = Plage.Find(F.Cells(i, "G"), LookIn:=xlValues, lookat:=xlWhole)
         If Not C Is Nothing Then F.Cells(i, "N") = F.Cells(C.Row, "B")
    Next i
    Je veux mettre B, C et D au lieu de seulemet B ?

  11. #11
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    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
    Sub test()
    Dim Plage As Range
    Dim C As Range
    Dim derligE As Long
    Dim derligJ As Long
    Dim F As Worksheet
    Set F = Sheets("Feuil1")
    derligE = F.Range("E" & Rows.Count).End(xlUp).Row
    derligJ = F.Range("J" & Rows.Count).End(xlUp).Row
    Set Plage = F.Range("J2:J" & derligJ)
    For i = 2 To derligE
    Set C = Plage.Find(F.Cells(i, "E"), LookIn:=xlValues, lookat:=xlWhole)
         If Not C Is Nothing Then 
          F.Cells(i, "L") = F.Cells(C.Row, "B")
          F.Cells(i, "M") = F.Cells(C.Row, "C")
          F.Cells(i, "N") = F.Cells(C.Row, "D")
       end if
    Next i
    End Sub

Discussions similaires

  1. [XL-MAC 2016] Rechercher une couleur dans un texte par rapport à un tableau
    Par MrXens dans le forum Excel
    Réponses: 3
    Dernier message: 05/07/2018, 10h21
  2. [XL-2010] MEF et formule par rapport a une ligne
    Par graphikris dans le forum Excel
    Réponses: 4
    Dernier message: 09/02/2016, 17h29
  3. Réponses: 1
    Dernier message: 21/11/2012, 16h36
  4. [VxiR2] Position d'une cellule par rapport à un tableau
    Par EtudiantJ2EE dans le forum Deski
    Réponses: 13
    Dernier message: 21/11/2011, 16h58
  5. Réponses: 6
    Dernier message: 28/12/2004, 16h09

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