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 - RechercheV - Boucle [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut VBA - RechercheV - Boucle
    Bonjour tout le monde,

    Je viens vers vous pour obtenir vos précieux conseils!

    Je souhaiterai réaliser une macro qui s'adapte, pour effectuer une rechercheV dans chaque cellule de ma colonne X de ma dernière feuille.
    La clé recherchée se situe dans la colonne H. (Pour X1 ->H1; X2->H2;...; Xi->Hi)
    La matrice se trouve dans la feuille avant, avec pour référence : (H2:Ti).
    Ma valeur a renvoyé se trouve en colonne 13 et ma rechercheV est Faux.

    Mon problème est que chaque mois je rajoute une feuille en dernière position dans ce classeur excel. (Chaque feuille comporte le même nombre de colonnes mais le nombre de lignes diffère d'un mois sur l'autre.)
    les références de ma fonction rechercheV changent donc!

    Je ne sais pas si j'ai étais très clair donc je mets en pj mon classeur sans données.

    Est ce que quelqu'un aurait une idée car je bloque la dessus depuis hier!!

    Merci d'avance pour votre aide!
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Qu'est-ce qui te bloque au juste ?

    Si les nouvelles feuilles sont toujours placées à la fin, la dernière feuille se nomme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Sheets.Count).name
    La précédente est .Count - 1

    Par contre, si tes feuilles peuvent être déplacées et que tu doives trouver les 2 dernières créées, ça prendrait peut-être un code comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim I As Long
        Dim DerniereFeuille As String, AvantDerniere As String
     
        For I = 1 To Sheets.Count
            If Right(Sheets(I).CodeName, Len(Sheets(I).CodeName) - 5) = CStr(Sheets.Count) Then
                DerniereFeuille = Sheets(I).Name
            ElseIf Right(Sheets(I).CodeName, Len(Sheets(I).CodeName) - 5) = CStr(Sheets.Count - 1) Then
                AvantDerniere = Sheets(I).Name
            End If
        Next
        MsgBox DerniereFeuille & vbCrLf & AvantDerniere

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut
    Merci Parmi pour ta réponse.
    Mes feuilles sont toujours les deux dernières et je suis ok avec .count et .count-1. Ce que je n'arrive pas à faire est le codage de ma fonction rechercheV avec Vlookup du style:
    cells(i,24).value = worksheetfunction.vlookup(.........) de manière à ce que cela fonctionne à chaque fois que je rajouterai une feuille!

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tu préfères inscrire une valeur ou une formule ferait l'affaire ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 17
    Par défaut
    une formule ferait l'affaire je pense!
    merci

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si j'ai bien compris la formule, ceci devrait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Formule()
        Dim shSource As Worksheet, shDest As Worksheet
        Dim LigneSource As Long, LigneDest As Long
     
        Set shSource = Sheets(Sheets.Count - 1)
        Set shDest = Sheets(Sheets.Count)
     
        LigneSource = shSource.Cells(Rows.Count, "H").End(xlUp).Row
        LigneDest = shDest.Cells(Rows.Count, "H").End(xlUp).Row
     
        shDest.Range("X2:X" & LigneDest).Formula = "=VLOOKUP(H2," & shSource.Name & "!$H$1:$T$" & LigneSource & ",13,FALSE)"
     
    End Sub

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

Discussions similaires

  1. [VBA-E]boucle
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/04/2006, 18h08
  2. [VBA-E] boucle lente !
    Par zenix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/04/2006, 15h48
  3. [VBA-E]Boucle mise a jour label
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/03/2006, 14h32
  4. [VBA-E]Boucle pour addition?
    Par LouBoulpi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/02/2006, 20h50
  5. [VBA-E] Boucle while!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/12/2005, 19h26

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