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 :

Recherche valeur d'une cellule dans feuille a coté


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut Recherche valeur d'une cellule dans feuille a coté
    Bonjour,
    je cherche à récupérer la valeur d'une cellule en fonction d'un nom qu'il posséde dans une autre feuille.
    Sachant qu il ne faut pas que je nomme cette feuille car l’année prochaine il cherchera la valeur dans la feuille de cette année.
    En fait je veux comparer les valeurs de cette année avec celles de l'année derniere.

    je pensais a une rechercheV mais je me retrouve avec le nom de la feuille fixe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-7],'PDCT Prédetente 2018'!RC[-7]:R[133]C[1],7,FALSE)"
    dans mon exemple il va rechercher ds la feuille PDCT Prédetente 2018. mais l'année prochaine il devra chercher dans 2019

    Merci

  2. #2
    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
    En supposant que tes onglets soient dans l'ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Dest As String
    Dest = Worksheets(ActiveCell.Worksheet.Index - 1).Name
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],'" & Dest & "'!RC[-7]:R[133]C[1],7,FALSE)"

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Merci Menhir !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    J'ai un autre pb avec la formule
    chaque année ça va me rajouter une colonne du coup la recherche va se décaler et ne plus fonctionner

    mon élement a rechercher sera toujours ds la colonne B, par contre au fur et a mesure des années il devra être inserer dans une colonne en plus cette année en colonne i, l'année prochaine en J, etc....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Dest As String
    Dest = Worksheets(ActiveCell.Worksheet.Index + 1).Name
    Range("i2:i" & [F65536].End(xlUp).Row).FormulaR1C1 = "=VLOOKUP(RC[-7],'" & Dest & "'!R2C2:R200C10,7,FALSE)"
    Comment je peux faire ?
    Merci

  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
    Il suffit de mettre la référence de l'élément chercher en absolu et non en relatif.
    Et c'est plus simple à faire avec des références type A1 que R1C1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Dest As String
    Dest = Worksheets(ActiveCell.Worksheet.Index + 1).Name
    Range("I2:I" & Cells(Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP($B2,'" & Dest & "'!$B:$J,7,FALSE)"

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Merci Menhir
    Par contre la premiere fois ça marche mais apres au lieu de copier dans la colonne J il copie ds la colonne I

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("I3:I" & Cells(Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP($B3,'" & Dest & "'!$B:$J,7,FALSE)"

  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
    Je ne comprends pas ta demande.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Chaque année dans cette feuille ma macro rajoute une colonne.
    la premiere année elle va etre en I , la seconde en J etc...
    le code ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dest = Worksheets(ActiveCell.Worksheet.Index + 1).Name
    Range("I3:I" & Cells(Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP($B3,'" & Dest & "'!$B:$J,7,FALSE)"
    ce code met bien a jour la rechercheV dans la colonne I mais l'année suivante au lieu de mettre la rechercheV dans la colonne J il le met dans la colonne I

    chose logique vu ma ligne de code qui commence par range("I3:I)

    Vois tu mon Pb ?

  9. #9
    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
    Comment peut-on faire le lien entre un numéro de colonne et une année ? Comment sait-on quelle année doit être traitée ?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Au début de ma macro j'ai une MsgBox qui demande l'année, et dans ma macro j'insère une colonne que je nomme ex:2019.

  11. #11
    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
    Si tu as la position de l'entête de ta colonne, il suffit de la décaler avec un Offset(1, 0) pour désigner la cellule du dessous et de l'étirer avec un Resize (selon Cells(Rows.Count, "F").End(xlUp).Row ).
    Lire ça :
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)
    https://msdn.microsoft.com/fr-fr/lib...4(v=office.15)

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Comment je peux faire une fois que j'ai récuperer la lettre de la colonne de ma cellule active pour remplacer mon code ou apparait range("I3:I"........
    Car sinon ma macro ecrase tout le temps dans la meme colonne a savoir la I

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    col = Replace(Chr(64 + Fix((ActiveCell.Column - 1) / 26)) & _
           Chr(65 + ((ActiveCell.Column - 1) Mod 26)), Chr(64), "") 'récupere la lettre de la colonne ds laquelle la cellule est active
    Range("I3:I" & Cells(Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP($B3,'" & Dest & "'!$B:$J,7,FALSE)"
    J'espere etre clair.
    Merci d'avance

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    c'st bon j'ai trouvé
    pour info voila le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    col = Replace(Chr(64 + Fix((ActiveCell.Column - 1) / 26)) & _
           Chr(65 + ((ActiveCell.Column - 1) Mod 26)), Chr(64), "") 'récupere la lettre de la colonne ds laquelle la cellule est active
     
     
    Range(col & "3:" & col & Cells(Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP($B3,'" & Dest & "'!$B:$J,7,FALSE)"

Discussions similaires

  1. VBA Copier la valeur d'une cellule dans feuille
    Par Apdil dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2018, 09h56
  2. [XL-2003] Formule d'appel de la valeur d'une cellule dans une feuille différente
    Par julieng31 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/11/2010, 08h55
  3. [XL-2003] Recopier la valeur d'une cellule dans une autre feuille au changement
    Par docjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/10/2010, 07h52
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. [vba excel] Recherche valeur d'une textbox dans une feuille
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/08/2006, 10h55

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