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 :

boucle vba et mise à jour de colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Par défaut boucle vba et mise à jour de colonne
    Bonsoir


    ça fait plusieurs jours que je bloque sur un problème de boucle en langage vba avec le logiciel excel !!!

    Je souhaite mettre à jour la colonne 2 de ma feuil1 à partir de la colonne 2 de ma feuil2.
    La 1ère colonne des deux feuilles sert de champ clé.
    Il est impossible que les lignes de la feuil2 ne soit pas dans la feuil1.

    En faite j'arrive seulement à mettre à jour le 1er champ clé de la feuil, après il ne modifie plus rien.

    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 pop()
     
    Dim trouve As Boolean
     
    x = 2 'x ligne de la feuil1
    y = 2 'y ligne de la feuil2
     
    Do While Worksheets("feuil1").Cells(x, 1) <> ""
    If Worksheets("feuil1").Cells(x, 1) = Worksheets("feuil2").Cells(y, 1) Then
    Worksheets("feuil1").Cells(x, 3) = worksheets("feuil2").cells(y,2)
     
    End If
    x = x + 1
    Loop
     
    End Sub
    Pour info, je préfère do while à for car mon fichier n'aura pas forcément à l'avenir le même nombre de lignes.

    quelqu'un peut-il m'aider ?


    Merci et bonnes fêtes à tous

  2. #2
    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
    Ton problème vient du fait que y ne varie pas.

    Citation Envoyé par jrege75 Voir le message
    Il est impossible que les lignes de la feuil2 ne soit pas dans la feuil1.
    Mais s'il est possible que des lignes de la feuil1 ne soient pas dans la feuil2, tu dois passer par une recherche.
    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!

  3. #3
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,


    si tu veux garder ton principe , il te faut insérer dans ta boucle une deuxiéme boucle doWhile pour faire varier ton y.

  4. #4
    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
    Si, par contre, tu veux apprendre à travailler avec des objets, je te propose ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub pop()
      Dim c As Range
      Dim rFound As Range
      For Each c In Range(Worksheets("feuil2").[A2], _
              Worksheets("feuil2").Cells(Rows.Count, 1).End(xlUp))
        Set rFound = Range(Worksheets("feuil1").[A2], _
              Worksheets("feuil1").Cells(Rows.Count, 1).End(xlUp)).Find(c.Value)
        If Not rFound Is Nothing Then
          rFound.Offset(0, 2) = c.Offset(0, 1)
        End If
      Next c
    End Sub
    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!

Discussions similaires

  1. [VBA-Excel]Mise à jour des liaisons powerpoint
    Par Mando dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2006, 22h51
  2. [Excel] Mise à jour par colonnes
    Par Kamo76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/12/2006, 16h34
  3. [VBA] requete mise à jour
    Par tomtree dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/09/2006, 16h42
  4. [VBA-E] Mise à jour données externes
    Par Sebastien_INR59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2006, 17h11
  5. [VBA][EXCEL] Mise à jour de TCD en macro
    Par Scuriolus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/12/2005, 13h30

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