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 d'une valeur dans une autre table (Vlook) si une cellule est vide ou non [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Par défaut recherche d'une valeur dans une autre table (Vlook) si une cellule est vide ou non
    bonjour, j'ai un tableau dont les dimensions peuvent varier. j'ai besoin de rajouter une colonne à la fin avec l'équivalent de la fonction RechercheV
    voilà le code que j'ai écrit mais la boucle For/next ne fonctionne pas avec ma condition If.
    Quelqu'un aurait-il une idée? MERCI!!!

    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
    Sub recherchev_loc()
    Workbooks("fichier_du_jour_20200505.xlsx").Worksheets("Kinaxis").Activate
    Dim dercol As Integer
    Dim derlig As Integer
    Dim LigDep As Integer
    dercol = ActiveSheet.Cells(1, Cells.Columns.Count).End(xlToLeft).Column 'dercol = calcul du nombre de colonnes du tableau
    derlig = ActiveSheet.Range("B1").End(xlDown).Row 'derlig = calcul du nombre de ligne du tableau
    For LigDep = 2 To derlig + 1
    Cells(LigDep, dercol + 1).Select
    If Range("N" & LigDep).Value <> "" Then
    Cells(LigDep, dercol + 1).Value = WorksheetFunction.VLookup(Range("N" & LigDep).Value, Workbooks("BD_Markets_Locactions_Regions.xlsx").Sheets("Plants & Loc").Range("PlantsLoc"), 2, False)
    End If
    Cells(LigDep, dercol + 1).Value = "NA"
    Next
     
    End Sub

  2. #2
    Expert éminent 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
    Par défaut
    Citation Envoyé par Xavier123 Voir le message
    voilà le code que j'ai écrit mais la boucle For/next ne fonctionne pas avec ma condition If.
    "ne fonctionne pas", ce n'est pas très parlant comme description de dysfonctionnement.
    Que se passe-t-il exactement ?
    Si l'exécution bugue, quel est le message d'erreur ?
    Si le résultat n'est pas celui souhaité, quel est la différence entre les deux ?

    j'ai besoin de rajouter une colonne à la fin avec l'équivalent de la fonction RechercheV
    Ton code ne rajoute pas une fonction mais une valeur.
    Pour ajouter une fonction, il ne faut pas appliquer la propriété Value mais Formula (ou une de ses cousines) à la cellule destination et lui assigner la fonction sous forme littérale (une chaine de caractères).

    Mais le plus gênant, c'est qu'après avoir mis cette valeur dans la cellule, tu la remplaces systématiquement par NA.
    A mon avis, tu as oublié un Else.
    Une vérification avec un fonctionnement en pas-à-pas t'aurait permis de constater cette erreur.

    Ton code corrigé :
    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
    Sub recherchev_loc()
       Dim dercol As Integer
       Dim derlig As Long
       Dim LigDep As Integer
       Dim WSDest As Worksheet
       Dim WSSource As Worksheet
     
       Set WSDest = Workbooks("fichier_du_jour_20200505.xlsx").Worksheets("Kinaxis")
       Set WSSource = Workbooks("BD_Markets_Locactions_Regions.xlsx").Sheets("Plants & Loc")
     
       dercol = WSDest.Cells(1, Columns.Count).End(xlToLeft).Column          'dercol = calcul du nombre de colonnes du tableau
       derlig = WSDest.Cells(Rows.Count, "B").End(xlUp).Row                      'derlig = calcul du nombre de ligne du tableau
     
       For LigDep = 2 To derlig + 1
          If WSDest.Cells(LigDep, "N").Value <> "" Then
             WSDest.Cells(LigDep, dercol + 1).Value = WorksheetFunction.VLookup(WSDest.Range("N" & LigDep).Value, WSSource.Range("PlantsLoc"), 2, False)
          Else
             WSDest.Cells(LigDep, dercol + 1).Value = "NA"
          End If
       Next LigDep
     
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Par défaut Merci Menhir
    Merci Menhir. je n'ai pas eu le temps de mettre en application ta proposition de code mais je vais le faire demain matin et confirmerai que ca fonctionne.
    je sais que mon message de demande d'aide était un peu vague mais tu as compris d'où venait l'erreur. effectivement, la valeur de la cellule cible était toujours NA.

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

Discussions similaires

  1. lancer une macro en fonction si une cellule est vide ou non
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2011, 14h12
  2. lancer une macro en fonction si une cellule est vide ou non
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/11/2011, 10h01
  3. Réponses: 23
    Dernier message: 21/07/2009, 14h19
  4. Rechercher une valeur dans un autre table
    Par zangel dans le forum Access
    Réponses: 4
    Dernier message: 10/09/2008, 01h48
  5. [VBA-E]Tester si une cellule est vide dans un cas particulier
    Par tonnick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2007, 10h12

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