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 :

Trouver le numéro de la ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut Trouver le numéro de la ligne
    Bonjour à tous,
    Il y a plus d'une année que ce sujet à malheureusement été clos.

    J'ai recopié votre code que je trouve très bien et je voudrais l'adapter à ma situation:
    J'ai une "feuil1" et une feuille "dest". Mon but est de parcourir "dest" et si je trouve une correspondance en colonne B dans "feuil1" alors je modifie la ligne en question; et si je ne trouve pas de correspondance j'ajoute une nouvelle ligne dans "feuil1".

    Ma question est comment -sans faire une autre boucle quui va ralentir- trouver le numéro de la ligne associée dans "feuil1".

    Voilà le début de mon adaptation de votre excellent 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
    21
    22
    23
    24
    25
    26
    Sub AjouterSiInexistant()
    Dim Fp As Worksheet 'Feuille ¨projet
    Dim Fcde As Worksheet 'Feuille Commande
    Dim stNom As String 'Valeur à chercher
    Dim r As Range ' Plage de recherche
    Dim c
    Set Fp = Sheets("feuil1")
    Set Fcde = Sheets("dest")
    Sheets("dest").Select
    For i = 1 To Cells(65535, 1).End(xlUp).Row
    stNom = Fp.Range("B" & i) 'Récupere la valeur à chercher
     
    'définit la Zone de recherche
     
    Set r = Fcde.Range("B:B")
     
    Set c = r.Find(stNom)
     
    If c Is Nothing Then
      MsgBox stNom & " ... " & Introuvable
    Else
     MsgBox stNom & " Trouvé colonne " & c.Column
    End If
    Next i
     
    End Sub
    Merci infiniment de votre réponse.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Très bien, c'est la preuve que tu à cherché
    tu retrouve l'adresse de la cellule dans c.Address

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci beaucoup leforestier,

    Mais c.address correspond à quoi. Car généralement une cellule est référencée par des coordonnées k et j : cells(k,j) avec k le numéri de ligne et j le numéro de colonne.

    Que représente donc c.addresse par rapport à k et j?

    Merci infiniment

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour Maestro1303,

    "c" est une variable qui fait référence à la cellule en cours.

    Address est une fonction

    dons c.Address va revoyer par exemple "$A$29" si la valeur recherchée a été trouvée dans cette cellule.

    Dans la fenêtre VBA, tapez Address puis placez le curseur sur ce mot et appuyez sur F1 et vous aurez l'aide qui s'affichera.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Cette instruction
    renvoie un objet (c) qui est une instance de la cellule trouvée.

    Citation Envoyé par jacques_jean Voir le message
    Address est une fonction
    Désolé, jacques_jean, mais Address est une Propriété.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok AlainTech,

    Merci pour la précision.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Vu que tu cherche à trouver la ligne tu peu aussi employer..
    A+
    EDIT: Tu pourrais aussi agencé ton code un peu mieux ce serrait plus clair, genre ...
    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
    Sub AjouterSiInexistant()
    Dim Fp As Worksheet 'Feuille ¨projet
    Dim Fcde As Worksheet 'Feuille Commande
    Dim stNom As String 'Valeur à chercher
    Dim r As Range ' Plage de recherche
    Dim c
        Set Fp = Sheets("feuil1")
        Set Fcde = Sheets("dest")
        Sheets("dest").Select
        For i = 1 To Cells(65535, 1).End(xlUp).Row
            stNom = Fp.Range("B" & i) 'Récupere la valeur à chercher
            'définit la Zone de recherche
            Set r = Fcde.Range("B:B")
            Set c = r.Find(stNom)
            If c Is Nothing Then
                MsgBox stNom & " ... " & Introuvable
            Else
                MsgBox stNom & " Trouvé colonne " & c.Column
            End If
        Next i
    End Sub

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci Jaques Jean, Merci leforestier,merci Alain tech,

    Excusez mon manque da'ttention car je ne siuis pas sûr d'avoir tout capté

    1) si j'ai , comment faire pour connaître le numéro de la ligne dans mon code, car je veux absolument faire un traitement sur l'une des colonnes de cette ligne.
    Peut être que je peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numlig=c.EntireRow.Select
    quitte à faire après dans la suite du programme.

    2) c renvoie un objet qui est l'instance de la cellule trouvée: je ne comprends pas bien, quelqu'un peut m'expliquer.


    3) Merci beaucoup leforestier, il est vrai que mon code n'était pas bien visible

    4) J'estime que je suis gâté Dieu Merci , car on me règle mes problèmes immédiats et je triouve de l'aide pour apprendre et monter en compétence grâce à vous.


    Merci sincèrement.

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par maestro1303 Voir le message
    comment faire pour connaître le numéro de la ligne dans mon code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.Row ' on lit la propriété Row de l'objet (la cellule) c
    Citation Envoyé par maestro1303 Voir le message
    c renvoie un objet qui est l'instance de la cellule trouvée: je ne comprends pas bien, quelqu'un peut m'expliquer.
    Tu peux utiliser c exactement comme si tu avais écrit Tu peux en lire ou modifier les propriétés, y appliquer les méthodes applicables aux Ranges.
    Un autre exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c.Offset(0, 5) = "Un texte" ' Ecrit "Un texte" dans la cellule située sur la même ligne 
                                ' et 5 colonnes à droite de la cellule c
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci infiniment les gars,

    Mon problème, vous l'avez reglé à 90% . J'ai envie de mettre la mention "Résolu" si ce n'est quelques bugs. J'ai par exemple anvie d'avancer
    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
    Sub AjouterSiInexistant()
    Dim Fp As Worksheet 'Feuille ¨projet
    Dim Fcde As Worksheet 'Feuille Commande
    Dim stNom As String 'Valeur à chercher
    Dim r As Range ' Plage de recherche
    Dim c
        Set Fp = Sheets("feuil1")
        Set Fcde = Sheets("dest")
        Sheets("dest").Select
        For i = 1 To Cells(65535, 1).End(xlUp).Row
            stNom = Fp.Range("B" & i) 'Récupere la valeur à chercher
            'définit la Zone de recherche
            Set r = Fcde.Range("B:B")
            Set c = r.Find(stNom)
            If c Is Nothing Then
                'MsgBox stNom & " ... " & Introuvable
             là je veux écrire dans "feuil1" les données de toute la ligne de "dest" correspondant à stNom non trouvé
            Else
    là je veux mettre à jour la ligne de "feuil1" par stNom trouvé            
    MsgBox stNom & " Trouvé colonne " & c.Column
            End If
        Next i
    End Sub

    Je ne suis pas sûr que vous ayez bien compris mais dans un futur poste je mettrais la nouvelle version de mon code.
    Merci
    En tous cas le resolu n'est plus loin!

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Bonjour tout le monde,

    Je vais vous exposer le code que j'ai très mal expliqué dans mon précédent post.

    Ce code est lent, je n'ai pas pu y utiliser la fonction find, qui m'est pourtant très utile ici: Je n'ai pas pu.

    Aidez moi SVP à l'optimiser en y incluant éventuellment find ou équivalent


    Merci beaucoup et toutes mes excuses pour le manque de clarté du précédent post .
    Voilà le code(qui est loin d'être optimisé):
    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
    26
    27
    28
    29
     compteur = 0
        Sheets("feuil1").Select
        dernierfeuil1 = ActiveSheet.UsedRange.Rows.Count
        Sheets("feuil2").Select
        dernierfeuil2 = ActiveSheet.UsedRange.Rows.Count
    For i = 1 To dernierfeuil2
                 x1 = Cells(i, 1)
                 x2 = Cells(i, 2)
                 x3 = Cells(i, 3)
                 x4 = Cells(i, 4)
                 x5 = Cells(i, 5)
         recherche = Cells(i, 2)
         Sheets("feuil1").Select
     
                     For j = 1 To dernierfeuil1
                             If Cells(j, 2) = recherche Then
                                     Cells(j, 5) = x4
                             Else
                               compteur = compteur + 1
                               Cells(dernierfeuil1 + compteur, 1) = x1
                               Cells(dernierfeuil1 + compteur, 2) = x2
                               Cells(dernierfeuil1 + compteur, 3) = x3
                               Cells(dernierfeuil1 + compteur, 4) = x4
                               Cells(dernierfeuil1 + compteur, 5) = x5
                           End If
     
                       Next j
     
     Next i

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Je comprends mal ta démarche.
    Tu commences à poster avec un code +/- "propre" utilisant des instances de classeurs et de feuilles, puis tu effaces tout et tu repostes avec des select...

    Autrement dit, les indications qu'on t'a données plus haut ne servent plus à rien.

    Avant qu'on continue à t'aider, il faudrait que tu fasses un choix.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  13. #13
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Bonjour AlainTech,

    Vous avez raison, en plus ce code est tellement lent et me créé énormement de problèmes et si je l'ai écrit comme ça c'est pour que vous vous aperceviez de la logique de mon programme et que vous m'aidiez à la lumière de celà tout en revenant à mon code +/- propre.

    Mon problème est que:
    1. je ne sais pas adresser la ligne de la cellule où je trouve l'objet recherché car je dois y écrire
    2. Si je ne trouve rien qui correspond je dois me positionner à la dernière ligne de la feuille et la remplir par des valeurs.

    Merci infiniment

    PS: Je suis vraiment attaché à changer et à adopter votre méthode qui me permet aussi de monter en compétence. Ca n'avance à rien de prendre l'habitude d'écrire du code non optimisé.

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Juste pour le fun, car je n'ai pas l'habitude de donner du code tout fait:
    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
    26
    27
    28
    Sub AjouterSiInexistant()
      Dim wksProj As Worksheet 'Feuille ¨projet
      Dim wksCde As Worksheet 'Feuille Commande
      Dim strNom As String 'Valeur à chercher
      Dim rDest As Range ' Plage de recherche
      Dim rSource As Range
      Dim c As Range
      Dim cName As Range
      Set wksProj = Sheets("feuil1")
      Set wksCde = Sheets("dest")
      Set rSource = Range(wksCde.Cells(1, 2), wksCde.Cells(65535, 2).End(xlUp))
      wksProj.Select
      For Each cName In rSource
        strNom = cName.Value 'Récupere la valeur à chercher
        'définit la Zone de recherche
        Set rDest = wksProj.Range("B:B")
        Set c = rDest.Find(strNom)
        If c Is Nothing Then
          'là je veux écrire dans "feuil1" les données de toute la ligne de "dest" correspondant à stNom non trouvé
          MsgBox strNom & " Introuvable"
          cName.EntireRow.Copy wksProj.Cells(65535, 2).End(xlUp).Offset(1, -1)
        Else
          'là je veux mettre à jour la ligne de "feuil1" par stNom trouvé
          MsgBox strNom & " Trouvé ligne " & c.Row
          cName.EntireRow.Copy c.Offset(0, -1)
        End If
      Next cName
    End Sub
    Tu pourras y trouver quelques conventions de nommage des variables.
    Je te suggère d'étudier ce code et d'essayer de le comprendre.
    Le seul select que j'y ai mis sert à voir l'évolution de la macro dans la feuille de destination.

    Bonne étude de VBA!
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  15. #15
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci beacoup AlainTech,

    Je me penche tout de suite sur le code. Il me paraît bien.

    Je ferais tout pour bien le comprendre et l'adapter.

    Merci.

  16. #16
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci infiniment AlainTeech, merci à tous,

    J'ai adapté ton programme et il m'a reglé mon problème à 90%, sauf que j'ai eu un décalge de ligne dans le cas else, la seule ligne du code adapté:
    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
    26
    27
    28
    29
    30
    31
     Dim wksProj As Worksheet 'Feuille ¨projet
      Dim wksCde As Worksheet 'Feuille Commande
      Dim strNom As String 'Valeur à chercher
      Dim rDest As Range ' Plage de recherche
      Dim rSource As Range
      Dim c As Range
      Dim cName As Range
      Set wksProj = Sheets("feuil1")
      Set wksCde = Sheets("feuil2")
      Set rSource = Range(wksCde.Cells(1, 2), wksCde.Cells(65535, 2).End(xlUp))
      wksProj.Select ' pour parcourir les codes à chercher
      i = 0
      For Each cName In rSource
        strNom = cName.Value 'Récupere la valeur à chercher
            Set rDest = wksProj.Range("B:B")
        Set c = rDest.Find(strNom)
        
        If c Is Nothing Then
         
          wksProj.Cells(65535, 2).End(xlUp).Offset(1, -1) = cName.Cells(1, 0)
          wksProj.Cells(65535, 2).End(xlUp).Offset(1, 0) = cName.Cells(1, 1)
          wksProj.Cells(65535, 2).End(xlUp).Offset(0, 2) = 100
          wksProj.Cells(65535, 2).End(xlUp).Offset(0, 3) = cName.Cells(1, 3)
        Else
          
         cName.Cells(1, 3).Copy c.Offset(0, 3)
         
         
        
        End If
      Next cName
    Ainsi par la ligne cName.Cells(1, 3).Copy c.Offset(0, 3) je veux écrire
    cName.Cells(1, 3) dans deux colonnes après l'objet la ligne trouvée et à la même ligne de feuil1.

    Au lieu de celà il me l'écrit dans une ligne où la chaine recherchée est absente?
    Où se trouve le bug dans cette ligne soulignée?

    Merci

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par maestro1303
    Merci infiniment AlainTeech, merci à tous,

    J'ai adapté ton programme et il m'a reglé mon problème à 90%, sauf que j'ai eu un décalge de ligne dans le cas else, la seule ligne du code adapté
    c est la cellule trouvée, je te propose donc de remplacer ... par c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Else 'if not c is nothing then (sous entendu)
         c.Cells(1, 3).Copy c.Offset(0, 3)
        End If
      Next cName
    Ceci dit, je suis désolé mais comme je prends en route, je ne comprends pas ton explication :
    Citation Envoyé par maestro1303
    Ainsi par la ligne cName.Cells(1, 3).Copy c.Offset(0, 3) je veux écrire
    cName.Cells(1, 3) dans deux colonnes après l'objet la ligne trouvée et à la même ligne de feuil1.

    Au lieu de celà il me l'écrit dans une ligne où la chaine recherchée est absente?
    Si tu copies le contenu de deux colonnes, utilises plutôt l'égalité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(CelluleOùColler).Value = c.Offset(0,NoColOùCopier)
    Et si tu as plussieurs colonnes, tu répètes cette ligne en adaptant CelluleOùColler et le No de colonne où copier.

    (sans relire la discussion, j'ignore si tu cherches dans feuil1 ou si tu colles ou si tu fais les deux...)

  18. #18
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Excusez moi,

    Je voulais mettre un tableau bien présentable mais je n'y arrive pas.

  19. #19
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut
    Merci beaucoup ouskel'n'or, merci à tous,Excusez moi de devoir poster une petite partie des feuilles pour illustrer:J'ai dans ma feuil1 le tableau qui suit:

    Nom code prix
    HIJHENISTEN-PM 6370 1
    HIJHENISTEN-PM 6376 1
    HIJHENISTEN-PM-EREEBE 6377 1
    HIESKE 1607 1
    HIBENIE 355 2
    HIBENIE-PM 35568 0,5
    HIBENIE-PM 35566 41
    HIMERIE 781 11
    HIMERIE-HIMER 78170 12
    HIMERIE-HIMER 78171 0,6
    HIMERIE 7816 0,6
    HIMERIE-PM 78198 31
    HIMERIE-PM 78199 31
    HIMERIE 7817 31
    HIMERIE-PM ORESCOM 78190 31
    HIMERIE-PM ORESCOM 78191 31
    HIMERIE-PM ORESCOM 78197 31
    HIMERIE-PM ORESCOM 78193 31
    HIMERIE-PM ORESCOM 78194 10
    HIMERIE-PM ORESCOM 78195 5
    HIMERIE-PM WETENIYE 7815 6
    EMERICEN SEMOE 1684 7
    ENTIRRE 376 8
    ENTIRRE-PM 3763 9
    ENTIRRE-PM 3764 1,23
    ENTIRRE-PM 3765 2,23
    ENTIRRE-PM 3766 3,23
    ENJOLE 744 4,23
    ENJOLE-PM 74491 5,23
    ENJOLE-PM 74497 6,23
    ENJUILLE 1764 7,23
    ENTIJUE END BERBUDE 1768 7,23

    et dans la feui2 j'ai le tableau suivant:
    nom code Prix
    HIMERIE 7816 0,115
    HIMERIE 7817 0,115
    HIMERIE 78150 0,115
    HIMERIE 78151 0,115
    HIMERIE 78157 0,115
    HIMERIE 78153 0,115
    HIMERIE 78154 0,115
    HIMERIE 781 0,0801
    HIMERIE 78170 0,0801
    HIMERIE 78171 0,0801
    ENJOLE 744 0,1011
    ENJOLE 74491 0,148
    ENJOLE 74497 0,148

    Problème: si un code de feuil2 se trouve dans feuil1 alors recopier le prix de feuil2 dans la colonne 4 de la feuil1 fin du problème.

    Exemple on voit que le code 781 est dans la feuil2 et dans feuil1 alors cette dernière sera mise à jour comme suit:

    HIMERIE 781 11 0,0801

    Si maintenant le code de feuil2 n'est pas trouvé dans feuil1 alors feuil1 est mise à jour par l'ajout d'une ligne à la fin (code fourni gracieusement par AlainTech Grand Merci)

    Je vais essayer d'ajouter ces 2 feuilles en PJ.

    Je n'ai pas réussi à bien présenter ces quelques lignes dans un tableau avec cet éditeur, je vous les envoie en PJ. Exuser mon attitude.


    Merci tout le monde

    bonjour à tous,

    Je vous rappelle que dans tout le code, seule la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cName.Cells(1, 3).Copy c.Offset(0, 3)
    ne fait pas exactement ce que j'en attends.

    Merci
    Fichiers attachés Fichiers attachés

  20. #20
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par maestro1303 Voir le message
    Je vous rappelle que dans tout le code, seule la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cName.Cells(1, 3).Copy c.Offset(0, 3)
    ne fait pas exactement ce que j'en attends.
    Et elle fait quoi?
    Et qu'en tires-tu comme conclusion?

    Accessoirement, pourquoi, dans une même ligne, utilises-tu Cells et Offset?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Toutes versions] trouver le numéro de ligne d'une recherchevaleur
    Par genevievef dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2012, 22h22
  2. Trouver le numéro de ligne réel dans une grille
    Par Margance dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/11/2011, 13h06
  3. Fonction excel: trouver un numéro de ligne
    Par adv75 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2011, 22h37
  4. Comment trouver un numéro de ligne
    Par Mica--> dans le forum Excel
    Réponses: 2
    Dernier message: 13/01/2009, 08h06
  5. Trouver le numéro de ligne d'une fonction
    Par supertoms dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/04/2008, 20h10

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