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 :

Problème sur la syntaxe Range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut Problème sur la syntaxe Range
    Bonjour,

    Je suis assez novice en VBA et je rencontre un problème avec la syntaxe de la fonction Range. J'ai écrit le code après avoir consulter pas mal de forum mais ca fonctionne pas.

    l'objectif du code est de faire une RechercheV entre 2 feuille sauf que la plage de recherche est variable (en nombre de lignes).

    Voici le code:

    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
    'declaration des variables
    Dim Resultat, DerLig As Variant
    Dim Champ As Range
     
     
    DerLig = ThisWorkbook.Sheets("Import").[B65000].End(xlUp).Row
     
            With ThisWorkbook.Sheets("Import")
             Set Champ = Sheets("Import").Range("B2:B" & DerLig)
            End With
     
    For i = 2 To ThisWorkbook.Sheets("BD").[B65000].End(xlUp).Row
     
    Resultat = Application.VLookup(ThisWorkbook.Sheets("Import").Cells(i, 2), Sheets("BD").Range(Champ), 1, False)
     
    If Not IsError(Resultat) Then
    MsgBox "Ligne a copier: " & i
    End If
     
    Next i
    Si je remplace "DerLig" par un chiffre ça marche, autrement non!!

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Salam Saaied.mouadh, bonjour le forum,

    Il y a une incohérence est une erreur dans ton code.
    L'incohérence :
    tu définis la variable Champ dans l'onglet Import
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Champ = Sheets("Import").Range("B2:B" & DerLig)
    et ensuite, tu l'appelles via l'onglet BD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat = Application.VLookup(ThisWorkbook.Sheets("Import").Cells(I, 2), Sheets("BD").Range(Champ), 1, False)
    L'erreur :
    Puisque ta variable est de type Range tu ne dois pas Écrire Range(Champ) mais simplement Champ...
    Ton code (modifié mais non testé) deviendrait :
    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
    Public Sub Macro2()
    Dim CL As Workbook
    Dim IM As Worksheet
    Dim BD As Worksheet
    Dim Resultat
    DerLig As Integer 'voire Long si grand tableau
    Dim Champ As Range
     
    Set CL = ThisWorkbook
    Set IM = CL.Worksheets("Import")
    Set BB = CL.Worksheets("BD")
    DerLig = IM.Range("B" & Application.Rows.Count).End(xlUp).Row
    Set Champ = IM.Range("B2:B" & DerLig)
    For I = 2 To BD.Range("B" & Application.Rows.Count).End(xlUp).Row
        Resultat = Application.VLookup(IM.Cells(I, 2), Champ, 1, False)
        If Not IsError(Resultat) Then MsgBox "Ligne à copier: " & I
    Next I
    End Sub

  3. #3
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour,

    Je tiens déjà à signaler que pour un premier message sur le forum tu as prit soin de bien l'écrire. Bien joué !

    Par contre, quand tu dis que ça ne marche pas, tu peux nous dire plus précisément quelle ligne ne fonctionne pas ? Car à première vue il y a plus d'une erreur dans ton code. (Pour la lancer Pas à Pas, tu fais F8 dans la Sub)

    Mais sinon, je vais déjà te donner quelques pistes de modification

    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
    'declaration des variables
    Dim Resultat as Variant
    Dim DerLig As Long
    Dim Champ As Range
    Dim i as Long
     
     
    With ThisWorkbook.Sheets("Import")
        DerLig = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set Champ = .Range("B2:B" & DerLig)
    End With
     
    With ThisWorkbook.Sheets("BD")
     
         For i = 2 To .Cells(.Rows.Count,2).End(xlUp).Row
     
         Resultat = Application.VLookup(ThisWorkbook.Sheets("Import").Cells(i, 2), champs, 1, False)
     
    If Not IsError(Resultat) Then
    MsgBox "Ligne a copier: " & i
    End If
     
    Next i
     
    End With

    Slooby

  4. #4
    Membre à l'essai
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut
    Merci Slooby!

    c'est que j'avais la tête ailleurs :p.

    Ça marche en fin.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut
    Merci bien Thautheme.

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

Discussions similaires

  1. vlookup avec problème sur la méthode range
    Par Nako_lito dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/09/2009, 12h34
  2. Réponses: 4
    Dernier message: 18/02/2009, 12h53
  3. sql mon ami. problème sur une syntaxe
    Par sebinator dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/07/2008, 17h38
  4. problème sur parcours de range
    Par boss_gama dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/06/2008, 16h18
  5. Réponses: 1
    Dernier message: 10/01/2008, 16h07

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