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 :

Cherche le numéro de ligne ou se situe une donnée


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut Cherche le numéro de ligne ou se situe une donnée
    Bonjour
    je m'emmêle les pinceaux dans une recherche toute bête:
    Dasn une boucle, je définie une valeur ("Ref") dans une feuille à rechercher dans une table pour trouver le numéro de ligne NL ou elle se situe colonne A.
    bête comme chou..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Ref as variant
    Dim NL as integer
    ws1.activate
    Ref = Cells(i, 2).Value
    ws2.activate
       NL = ws2.Range("A").Find(Ref).Row
    et bien non.
    Ou est ce que je me trompe ?

    Merci de votre aide

  2. #2

  3. #3
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    Bon.
    Vraiment là, je n'arrive pas à transposer.
    L'erreur est dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NL = ws2.Range("A").Find(Ref).Row
    La méthode find ne demande qu'un argument obligatoire, what.
    la zone de recherche est définie avant par l'objet range, ici.
    L'bject range, et ce doit être l'erreur ne peut pas être. Find(Ref)ou
    le format Find(Ref) n'est pas correct.
    En l'occurence ici Ref es un alphanumérique, uen référence article de type XXX001

    Des précisions ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 161
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    qu'est-ce que Range("A") ?
    une plage nommée, ou tu veux faire référence à la colonne A, qui s'écrirait Range("A:A") ou Columns(1) ?

    ensuite, quand on utilises Find() :

    - il est hautement conseillé de renseigner l'ensemble des paramètres (voir l'aide en ligne pour la liste des paramètres) car à défaut, VBA utilisera les derniers paramètres renseignés dans la boite de dialogue ! A minima, on renseigne les paramètres "LookIn" et "LookAt", le reste est souvent pas nécessaire, mais conseillé

    - on ne manipule JAMAIS directement une propriété du range renvoyé par FIND. Si on ne trouve aucune occurrence, le Range n'existe pas et FIND renvoie donc Nothing ==> Plantage assuré
    on travaille en deux temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub toto()
    Dim MaRecherche As Range, MonMot As String
    MonMot = "toto"
       Set MaRecherche = ThisWorkbook.Worksheets("Gestion Interne PRESTA").Columns(1).Find(MonMot, , xlValues, xlWhole)
    If Not MaRecherche Is Nothing Then
        MsgBox MaRecherche.Row
    Else
        MsgBox "rien trouvé"
    End If
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dans me lien que je t'ai donné il y a. La fonction qui fait exactement ce que tu souhaites!

  6. #6
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    Bonsoir Joe et merci de ton aide
    Dans ton exemple, Find renvoie une plage "Marecherche".
    si je veux le numéro de ligne ou se trouve alors le bon "MonMot", alors j'ajoute
    NL = Marecherche.row pour trouver ce numéro de ligne ? on est d'accord ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est pas vrai! Développez.com ma mis dans les indésirables? Mes postes sont vues par personnes?
    Dernière modification par Invité ; 07/10/2017 à 10h26.

  8. #8
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    merci les gars, ça fonctionne.
    Il me reste un dernier souci, magie de l'informatique car ça marchait très bien jusqu'à ce soir et pourtant je n'ai rien changé: insérer une colonne vide après la dernière colonne non vide (et donc avant d'autres colonnes de calculs)
    Wb1 est une feuille de saisie d'articles
    Wb2 est l'inventaire déployé qui créé une colonne par nouvelle commande, juste après la dernière colonne occupée en ligne 4 pour y reporter la liste des articles commandés qui eux sont en ligne
    Les articles sont donc en lignes, les commandes en colonnes

    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
     
    Set ws1 = ThisWorkbook.Worksheets("Entrées")
    DL1 = ws1.Range("B" & Rows.Count).End(xlUp).Row
     
    'Dernière colonne: il n'y a jamais rien après la dernière date de saisie
    Set ws2 = ThisWorkbook.Worksheets("Feuil1")
    Dc = ws2.Cells(4, Cells.Columns.Count).End(xlToLeft).Column
    'Dernière ligne inventaire
    DL2 = ws2.Range("F" & Rows.Count).End(xlUp).Row
    ws2.Activate
     
    ' Ajout d'une colonne pour le mouvement
    Columns(Dc + 1).Insert Shift:=xlToRight
     
    'Saisie des données commande
    ws2.Cells(2, Dc + 1) = ws1.Cells(2, 7)
    ws2.Cells(4, Dc + 1) = ws1.Cells(4, 7)
    ws2.Cells(6, Dc + 1) = ws1.Cells(6, 7)
    Ce que je constate ?
    Le positionnement aléatoire de la dernière colonne créée, parfosi au bon endroit parfosi ailleurs.
    Pourtant j'ai vérouillé la feuille à chaque action (activate), le nombre de colonne Dc est toujours bon

    Ensuite, vous m'avez aidé à remplir cette colonne crée avec les articles commandés, pris, eux, de la feuille d'entrée ws1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ws1.Activate
    'Saisie des articles
    Dim Recherche As Range
     
    For i = 1 To DL1
        Ref = ws1.Cells(i, 2).Value
        Qty = ws1.Cells(i, 3).Value
        Set Recherche = ws2.Range("A:A").Find(Ref, , xlValues, xlWhole)
        NL = Recherche.Row
        MsgBox NL
        ws2.Cells(NL, Dc - 1) = Qty
    Next i
    Le but c'est de coller le nombre d'article de référence Ref en face de sa référence dans la colonne ainsi créée correspondant à cette nouvelle commande.
    Mais cells(NL, Dc-1) ne prend pas l avaleur Qty, qui es la quantité d'article commandé de Reférence Ref.

    Là, mystère et boule de gomme et chapeau pointu.
    ws2.Cells(NL, Dc - 1) = Qty ne se remplit pas
    Je suis sans doute fatigué..

Discussions similaires

  1. Numéro de ligne et colonne d'une cellule colorée
    Par saninx dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/03/2015, 10h58
  2. Réponses: 1
    Dernier message: 23/07/2012, 07h08
  3. liste des numéro de ligne où on trouve une valeur
    Par homerlehamster dans le forum Excel
    Réponses: 2
    Dernier message: 23/11/2010, 10h52
  4. [XL-2003] Récupérer le numéro de ligne ou est situé la valeur d'une combobox
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/08/2009, 13h04
  5. passer le numéro de ligne en paramètre d'une fonction
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/11/2008, 16h35

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