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 :

Faire une boucle jusqu'à la dernière ligne remplie [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut Faire une boucle jusqu'à la dernière ligne remplie
    Bonjour,

    Je souhaite pour l'ensemble des données d'une colonne effectuer cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      Range("H3").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Articles").Select
        Cells.Find(What:="11003603", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        Range("L4963").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("FEVRIER").Select
        Range("R3").Select
        ActiveSheet.Paste
    J'ai pensé à faire :
    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
     
     Dim Cel As Range
     For Each Cel In .Range("H2", .Range("H" & Rows.Count).End(xlUp))
     Range("H3").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Articles").Select
        Cells.Find(What:="11003603", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        Range("L4963").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("FEVRIER").Select
        Range("R3").Select
        ActiveSheet.Paste
    Next Cel
    Mais cela ne fonctionne pas. Je voulais rajouter un With Worksheets("FEVRIER") et End With qui englobe la boucle For mais cela ne fonctionne pas non plus..
    Merci pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    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
    Dim Cel As String 'pas besoin d'une variable range ici
    CelFin = Range("H1:H" & Range("H1").End(xlDown).Row).Count 'récupère le nombre de cellule non vide
     For Cel = 2 to CelFin  'de la cellule H2 a H dernière remplie
     Range("H" & Cel).Select 'tu selectionne celle en cours
     
    '.... Ton code fait par enregistreur de macro je suppose ^^
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Articles").Select
        Cells.Find(What:="11003603", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        Range("L4963").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("FEVRIER").Select
        Range("R" & Cel).Select 'selection de la cellule de destination
        ActiveSheet.Paste
    Next Cel 'prochaine cellule
    Il est possible de faire beaucoup plus simple et moins compliqué que ce que t'as donné l'enregistreur

  3. #3
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    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
     
    Dim Val As String, Insert As String
    Dim Art As Range
    CelFin = Range("H1:H" & Range("H1").End(xlDown).Row).Count 'récupère le nombre de cellule non vide
     
     For Cel = 2 To CelFin  'de la cellule H2 a H dernière remplie
            Range("H" & Cel).Select ' selectionne celle en cours
            Sheets("Articles").Select
            Val = Cells(Cel, 8).Value 'J'enregistre la valeur que je vais chercher
            Art = Cells.Find(What:="Val", After:=ActiveCell, LookIn:=xlFormulas, _      'Je cherche le range qui contient la valeur que je cherche
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
            Range("L" & Art.Row).Copy _                                             'Je cherche la valeur sur la même ligne dans l'autre colonne
            Destination:=Worksheets("FEVRIER").Range("R" & Cel)          'Je copie cette valeur
    Next Cel 'prochaine cellule
     
    End Sub
    Voila ce que j'ai travaillé, c'est plus simple que ce qui est enregistré. Mais il me met une erreur de bloc non défini au niveau de la première ligne du Find, j'ai essayé plusieurs with... end with mais je n'y arrive pas !

  4. #4
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Bonjour,

    Plusieurs choses :
    Tu peux simplifier la méthode pour récupérer la dernière ligne remplie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CelFin = Range("H"&rows.count).End(xlDown).Row
    Tu as écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells.Find(What:="Val",
    alors qu'il faut retirer les guillemets :Il manque également le set pour l'affectation du range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Art = Cells.Find(What:=
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Art = Cells.Find(What:=
    ce qui bout à bout devient :
    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
     
    Dim Val As String, Insert As String
    Dim Art As Range
    CelFin = Range("H"&rows.count).End(xlDown).Row 'récupère le nombre de cellule non vide
     
     For Cel = 2 To CelFin  'de la cellule H2 a H dernière remplie
            Range("H" & Cel).Select ' selectionne celle en cours
            Sheets("Articles").Select
            Val = Cells(Cel, 8).Value 'J'enregistre la valeur que je vais chercher
            set Art = Cells.Find(What:=Val, After:=ActiveCell, LookIn:=xlFormulas, _      'Je cherche le range qui contient la valeur que je cherche
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
            Range("L" & Art.Row).Copy _                                             'Je cherche la valeur sur la même ligne dans l'autre colonne
            Destination:=Worksheets("FEVRIER").Range("R" & Cel)          'Je copie cette valeur
    Next Cel 'prochaine cellule
     
    End Sub
    Je ne pense pas que cela suffira à résoudre ton problème, mais ça rendra les choses un peu plus simples.
    Aurais-tu un exemple de classeur à nous fournir? Ainsi qu'une explication bien claire et précise, détaillée étape par étape de ce que tu veux faire (les images ça aide bien aussi parfois)

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 684
    Par défaut
    Bonjour,

    Pourrais tu décrire avec des mots ce que tu cherche a faire, quel est la situation de départ et ce que tu aimerais obtenir.
    J'ai l'impression que l'utilisation d'un filtre avancé pourrait résoudre ton problème mais ton post est loin d'être clair...

  6. #6
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    Bonjour,

    Oui j'ai effectivement enregistré la macro. J'ai testé d'autres choses sans enregistrement mais je bloque trop sur certains points.

    J'ai deux feuilles, une avec les articles, l'autre qui s'appelle dans ce cas FEVRIER. Pour une donnée située dans la colonne H de la feuille FEVRIER, je veux allez chercher cette même donnée dans la feuille articles, en mettant une condition pour la recherche.

    La condition est : si la fin du code est 02, transformer en 03; si c'est 01, transformer en 02... etc

    Une fois que la ligne est trouvée dans la feuille articles je veux récupérer l'info d'une autre colonne de cette ligne et la copier dans la ligne correspondante de FEVRIER.

    Je souhaite répéter cela pour toutes les lignes non vides de FEVRIER.

  7. #7
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    Super, ça marche top.

    Je suis sur le début de ma mission. J'ai déjà compris pas mal de choses. J'ai juste une question : A quoi cela correspond (1,9) entre parenthèses ?

    Et j'ai fait des essais, je me rends compte que le chiffre que je veux copier dans la dernière colonne cela ne fonctionne pas. Quelle est l'explication ?
    Merci

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    sans chercher ce que tu veux, rien qu'à la lecture

    or tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Art = Cells.Find(What:=...
    il manque Set devant pour un "Range"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Art = Sheets("Articles").Range("D2", Dcel).Find(Cel)
    représente la cellule cherchée, si, j'ajoute "(1,9)" ou ".Offset(0,8) on prends la cellule 8 colonnes plus loin, même ligne, avec "Offset" on commence à 0, sans "Offset", on commence à 1, "art(1,1) ou art.Offset(0,0) est la cellule elle-même

    je me rends compte que le chiffre que je veux copier dans la dernière colonne cela ne fonctionne pas. Quelle est l'explication ?
    expliques-toi mieux

    je me suis rendu compte d'une erreur, code actuel
    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 essai()
     
    Dim Art As Range, CelFin As Range, Cel As Range, Dcel As Range
    With Sheets("FEVRIER")
      Set Dcel = .Range("H" & .Rows.Count).End(xlUp)
      Set CelFin = .Range("H2", Dcel)
      With Sheets("Articles")
        Set Dcel = .Range("D" & .Rows.Count).End(xlUp)
      End With
      For Each Cel In CelFin
        On Error Resume Next
        Set Art = Sheets("Articles").Range("D2", Dcel).Find(Cel)
        If Not Art Is Nothing Then
          .Range("K" & Cel.Row).Value = Art(1, 9).Value
        Else
          MsgBox "cette référence : " & Chr(34) & Cel.Value & Chr(34) & " n'existe pas" 'cette ligne si tu veux
          .Range("K" & Cel.Row).Value = "" 'cette ligne conseillée
        End If
        On Error GoTo 0
      Next Cel
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    si j'ai compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Art As Range, CelFin As Range, Cel As Range, Dcel As Range
    With Sheets("FEVRIER")
      Set Dcel = .Range("H" & .Rows.Count).End(xlUp)
      Set CelFin = .Range("H2", Dcel)
      For Each Cel In CelFin
        Set Art = Sheets("Articles").UsedRange.Find(Cel, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If Not Art Is Nothing Then
          .Range("R" & Cel.Row).Value = Art.Value
        End If
      Next Cel
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'aime être précis, la "Feuil2" est censée être la feuille "Février" ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    donc je résume
    tu recherche dans "articles" colonne D, la valeur de H feuille "Fevrier", si tu la trouves tu copies quelle cellule de la ligne de "articles" pour aller dans quelle cellule de "FEVRIER" car tes 2 feuilles s'arrêtent l'une à L, l'autre à K ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    tu recherche dans "articles" colonne D, la valeur de H feuille "Fevrier", si tu la trouves tu copies quelle cellule de la ligne de "articles" pour aller dans quelle cellule de "FEVRIER" car tes 2 feuilles s'arrêtent l'une à L, l'autre à K ?
    Je souhaite copier d'"Articles" la cellule L dans la cellule K de FEVRIER

  14. #14
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    essayes ce 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
    Sub essai()
     
    Dim Art As Range, CelFin As Range, Cel As Range, Dcel As Range
    With Sheets("FEVRIER")
      Set Dcel = .Range("H" & .Rows.Count).End(xlUp)
      Set CelFin = .Range("H2", Dcel)
      With Sheets("Articles")
        Set Dcel = .Range("D" & .Rows.Count).End(xlUp)
      End With
      For Each Cel In CelFin
        Set Art = Sheets("Articles").Range("D2", Dcel).Find(Cel)(1, 5)
        If Not Art Is Nothing Then
          .Range("K" & Cel.Row).Value = Art.Value
        End If
      Next Cel
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  15. #15
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    Sur l'exemple il tourne mais renvoie 1 dans les deux colonnes.
    Dans mon fichier, il ne tourne pas avec toujours j'erreur du bloc non défini au niveau du set Art

  16. #16
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    sur le fichier que tu as envoyé, une petite correction
    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
    Dim Art As Range, CelFin As Range, Cel As Range, Dcel As Range
    With Sheets("FEVRIER")
      Set Dcel = .Range("H" & .Rows.Count).End(xlUp)
      Set CelFin = .Range("H2", Dcel)
      With Sheets("Articles")
        Set Dcel = .Range("D" & .Rows.Count).End(xlUp)
      End With
      For Each Cel In CelFin
        Set Art = Sheets("Articles").Range("D2", Dcel).Find(Cel)(1, 9)
        If Not Art Is Nothing Then
          .Range("K" & Cel.Row).Value = Art.Value
        End If
      Next Cel
    End With
    End Sub
    sur ton fichier original, j'imagine que tes variables ne sont pas bien déclarées
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  17. #17
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    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
     
    Sub essai()
    Dim Art As Range, CelFin As Range, Cel As Range, Dcel As Range
    With Sheets("FEVRIER")
      Set Dcel = .Range("H" & .Rows.Count).End(xlUp)
      Set CelFin = .Range("H2", Dcel)
      With Sheets("Articles")
        Set Dcel = .Range("D" & .Rows.Count).End(xlUp)
      End With
      For Each Cel In CelFin
        Set Art = Sheets("Articles").Range("D2", Dcel).Find(Cel)(1, 11)
        If Not Art Is Nothing Then
          .Range("K" & Cel.Row).Value = Art.Value
        End If
      Next Cel
    End With
     
    End Sub
    Voila ce que j'ai dans mon fichier original. Dans l'exemple ça fonctionne niquel mais pas dans mon fichier..

  18. #18
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    ton fichier original est structuré comme l'exemple que tu as fourni ? même colonnes ?
    parce qu'il n'y a pas de raisons particulières pour que ça ne fonctionne pas, vérifies le nom de la feuille "Articles", il y a peut-être des espaces ou autre
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  19. #19
    Membre régulier
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Par défaut
    Cela fonctionne !!!!!! Merci beaucoup !!!

    Si j'ai un code qu'il ne trouve pas dans l'autre feuille la boucle va s'arrêter si j'ai compris le code. Comment puis-je remédier à cela ?

  20. #20
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    non, la boucle doit continuer, simplement il ne se passe rien quand il ne trouve pas, testes avec une valeur bidon en plein milieu (sans correspondance) et dis-moi

    je viens perso de tester, changes ton code comme ça
    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
    Sub essai()
     
    Dim Art As Range, CelFin As Range, Cel As Range, Dcel As Range
    With Sheets("FEVRIER")
      Set Dcel = .Range("H" & .Rows.Count).End(xlUp)
      Set CelFin = .Range("H2", Dcel)
      With Sheets("Articles")
        Set Dcel = .Range("D" & .Rows.Count).End(xlUp)
      End With
      For Each Cel In CelFin
        On Error Resume Next
        Set Art = Sheets("Articles").Range("D2", Dcel).Find(Cel)(1, 9)
        If Not Art Is Nothing Then
          .Range("K" & Cel.Row).Value = Art.Value
        End If
        On Error Goto 0
      Next Cel
    End With
    End Sub
    tu pourras mettre dans la condition "Else ce que tu veux"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. [XL-2013] Dérouler une cellule jusqu'à la dernière ligne de la colonne d'avant
    Par backx3 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/03/2016, 16h38
  2. Réponses: 1
    Dernier message: 22/07/2014, 13h07
  3. boucle "jusqu'à la dernière ligne"
    Par tallent_e dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2011, 19h36
  4. Réponses: 5
    Dernier message: 27/01/2010, 15h38
  5. Réponses: 3
    Dernier message: 25/11/2008, 12h15

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