Soucis boucle dans excel

Résolu
aexial -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
petit soucis sur Excel sur une macro..je débute donc je galère.
Je m'explique.
J'ai un fichier excel sur lequel j'ai une centaine de nom sur la colonne A et prénom en colonne B et j'ai rajouter sur la colonne G, H et I les noms et prénoms et adresse de mille personne environs..le but étant avec la macro de rajouter en colonne C l'adresse des personnes (colonne A et B)..je supprimerais ensuite à manuellement les colonnes G,H et I
en cherchant j'ai triffouillé une macro qui ne marche pas...j'ai testé sur les 11 lignes..quelqu'un a - t - il une idée?
Merci d'avance

code:

Sub Test_V01()
Dim x As Integer
'
For x = 2 To 11
'
if Cells(x, 1).value = Cells(x, 7).value And Cells(x, 2).value = Cells(x, 8).value

Then
Cells(x, 3) = Cells(x, i)
Else: Cells(x, 3) = vide
End If
Next x

End Sub

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,
    C'est pas mal pour un début...
    Bon à quoi correspond ton i dans :
    Cells(x, 3) = Cells(x, i)
    Essaye ceci :
    Sub Test_V01() 
    Dim Lign As Integer 
    For Lign = 2 To 11 
        If Cells(Lign, 1).value = Cells(Lign, 7).value And Cells(Lign, 2).value = Cells(Lign, 8).value Then 
            Cells(Lign, 3).Value = Cells(Lign, 9).Value 
        End If 
    Next Lign 
    End Sub 


    1- j'ai remplacé ta variable x par Lign. Motif : il est préférable d'éviter les variables d'une lettre, minimum 3 caractères (conseil d'un pro sévissant sur ce forum)
    2- ton Else Cells(x, 3) = vide est incorrect et inutile. Donc supprimé.
    3- Si, ne sachant pas, le nom et prénom contenu en A10 et B10 se retrouve en G152 et H152... Comment ta macro réagit? elle l'ignore. Si tu as ce genre de cas, dis le...
    Essaye et dis...
    0
  2. aexial
     
    merci pour l'aide..en fait le I correspondait à la colonne..tu as bien modifié en 9..par contre ta macro ne plante pas mais il ne se passe rien du tout..

    Peut etre est ce du au cas ou il n'y a pas de réponse pour la condition if?
    Merci
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      La macro fonctionne impecc... Du feu de dieu!!!!
      C'est juste que tu n'as pas tout expliqué... En fait, tes noms et prénoms ne sont pas situés sur les mêmes lignes.
      Exemple :
      A2 : DUPOND, B2 : Marcel, G2 : DUPOND, H2 : Marcel, I2 : 8 rue Rose
      Toi, à la place tu as :
      A2 : DUPOND, B2 : Marcel, G121 : DUPOND, H121 : Marcel, I121 : 8 rue Rose

      C'est cela? ... ou pas...
      0
  3. aexial
     
    oui comme tu dis j'ai pas tout expliqué..
    par exemple sur la colonne A et B je vais avoir DUPOND (colonne A) et michel (colonne B) et rien en c..sur la colonne G et H on retrouvera ce dupond michel mais comme tu l'as compris il ne sera pas du tout dans la meme ligne..le but est donc de mettre les infos de ce dupond michel colonne I (c'est l'adresse) dans la colonne C
    Le but étant de ne pas faire le tric à la main car j'ai en gros 200 noms en colonne A et B et plus de 1000 en G et H.
    Désolé si je ne suis pas clair

    En tout cas merci de te creuser la tete lol
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Essaye ceci :
      Sub test()
      Dim Lign As Integer, LignRech As Integer
      For Lign = 2 To Range("A65536").End(xlUp).Row
          For LignRech = 2 To Range("G65536").End(xlUp).Row
              If Cells(Lign, 1).Value = Cells(LignRech, 7).Value And Cells(Lign, 2).Value = Cells(LignRech, 8).Value Then
                  Cells(Lign, 3).Value = Cells(LignRech, 9).Value
                  Exit For
              End If
          Next LignRech
      Next Lign
      End Sub
      0
    2. aexial
       
      ca marche!
      merci bcp d'avoir pris du temps decu..pour que je sache à quoi correspond le notion de .End(xlUp).Row ?
      Merci
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Row = ligne
      End(xlUp) parcourt la colonne de la fin vers le haut.
      Donc : Range("A65536").End(xlUp).row = numéro de la dernière cellule remplie de la colonne A.
      0