Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1621 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Aide vba : Comparer deux colonnes A et B et ajouter à B ce qu'il manqu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide vba : Comparer deux colonnes A et B et ajouter à B ce qu'il manqu

n°2036329
viv207
Posté le 16-11-2010 à 14:35:49  profilanswer
 

Slt j’ai besoin de votre aide s’ils vous plait.
 
Je me casse la tête depuis des jours a trouver une macro en vba capable de faire ce que je vais vous décrire en bas et comme je suis débutant je n’y arrive pas.
 
J’ai 2 fichiers excel : 1 nommé lcc Casa et l’autre fichier s’appelle suivi evolution.
 
Ce qu’il faut faire c’est qu’a partir du fichier lcc casa recopier les données dans le fichier suivi evolution.
 
Or le problème c’est que dans le fichier  lcc Casa il y a des codes erreur  qui ne sont pas dans le fichiher suivi evolution
 
Donc ce qu’il faut faire c’est comparer la colone 1 du fichier lcc casa à la colonne 1 du fichier sui evolution et rajouter les lignes qui manque en recopiant les donnés dasn le fichier evolution
 
J’ai fait une macro pour copier les donnés mais je ne sais pas comment lui dire d’ajouter les lignes manquantes en faite.
 
Exemple :
 
Fichier lcc casa                            Ficher evolution
 
Code erreur                                 Code erreur
1                                               1
5                                               6
6                                               7
7                                               8
 
 
 
Donc il faut comparer les 2 colonnes et rajouter la ligne 5 dans le fihcier evolution.
 
 
Pouvez vous m'aider ?
 
Moi j'ai fait ca mais ca ne vous aidera pas car j'ai un peu simplifier le probléme pour que vous puissiez comprendre.
 
Sub copiedelccaamt()
Dim p As Object, m As Object, I As Integer, J As Integer
Set p = Worksheets("AMT" ).Range("A1:B1100" )
Set m = Worksheets("lcc casa par sir et ano" ).Range("A2:D1000" )
For I = 1 To 1100
For J = 1 To 1100
If m.Cells(I, 2).Value = "AMT" Then
If m.Cells(I, 3).Value = p.Cells(J, 1).Value Then
p.Cells(J, 2).Value = m.Cells(I, 4).Value
End If
End If
Next J
Next I
End Sub


Message édité par viv207 le 16-11-2010 à 14:37:36
mood
Publicité
Posté le 16-11-2010 à 14:35:49  profilanswer
 

n°2036514
viv207
Posté le 17-11-2010 à 08:55:44  profilanswer
 

S'il vous plaît je remonte car j'ai besoin d'aide, je suis apprenti dans une entreprise et j'en ai besoin. Merci d'avance

n°2036969
Xxxaaavvv
Posté le 18-11-2010 à 17:05:23  profilanswer
 

je dirais que ta boucle n'est pas bonne
 
je vais essayé d'en écrire une d'après la tienne...
 
 
Edit,  
Paye tes Ranges de Ranges merdique :/


Message édité par Xxxaaavvv le 18-11-2010 à 17:38:00
n°2036988
Xxxaaavvv
Posté le 18-11-2010 à 17:55:07  profilanswer
 

Vite fait,
J'ai réécris parceque j'aime pas les for avec des variables "i"
 
en fait si tu ne veux pas récupérer ce que je t'ai écris;
t'as juste a ajouter un boolen "trouvé"
 
pour qu'une fois sorti de ta boucle tu traite le cas ou tu n'as pas trouver ta ligne...
 
 
Perso la boucle je l'écrirai comme ça :  
 


Sub copiedelccaamt()
 
Dim objSource As Worksheet
Dim objDestination As Worksheet
Dim objCellSource As Range
Dim objCellDestination As Range
 
Dim strRecherche As String
Dim blnTrouver As Boolean
 
Set objSource = Worksheets("AMT" )
Set objDestination = Worksheets("lcc casa par sir et ano" )
 
'Pour chaque ligne de "AMT"
For Each objCellSource In objSource.Range("B2:B1100" )
   If objCellSource.Value = "AMT" Then
       
      'On cherche la valeur dans la feuille "lcc casa par sir et ano"
      'Initialisation de la boucle de recherche
      strRecherche = CStr(objSource.Cells(objCellSource.Row, objCellSource.Col + 1).Value)
      blnTrouver = False
      Set objCellDestination = objDestination.Range("A2" )
      While Not blnTrouver And objCellDestination.Row < 1000
         If CStr(objCellDestination.Value) = strRecherche Then
            blnTrouver = True
         Else
            'On passe a la cellule suivante
            Set objCellDestination = objDestination.Cells(objCellDestination.Row + 1, objCellDestination.Col)
         End If
      Wend
   
      'On traite le résultat de la recherche
      If blnTrouver Then
       
         'ICI LE CODE POUR LE CAS OU LA RECHERCHE EST FRUCTUEUSE
         'la bonne rangée étant objCellDestination.Row
       
      Else
       
         'ICI LE CODE POUR LE CAS OU LA LIGNE N'EST PAS TROUVEE
         'tu dois insérer une ligne supplémentaire avec les bonnes valeurs...
         'La ligne à copier étant objCellSource.row
         
      End If
   
   End If
Next
 
 
 
 
 


n°2037356
viv207
Posté le 20-11-2010 à 16:40:27  profilanswer
 

Je te remercie infiniment Xxxaaavvv . J'essaye ça ce week et je te donne des nouvelles. Comme je suis débutant il me faut un peu de temps avant de comprendre ce que tu as fait.

n°2037540
viv207
Posté le 22-11-2010 à 10:26:21  profilanswer
 

Salut
 
Alors j'ai fait ce que tu as dit, j'ai mis un booléan ( car ta vba se bloque à cette ligne strRecherche = CStr(objSource.Cells(objCellSource.Row, objCellSource.Col + 1).Value)      blnTrouver = False )
 
 
Sub amt()
Dim p As Object, m As Object, I As Integer, J As Integer, blnTrouver As Boolean
Set p = Worksheets("AMT" ).Range("A1:Z1100" )
Set m = Worksheets("lcc casa par sir et ano" ).Range("A2:D1000" )
 
For I = 1 To 2
For J = 1 To 2
If m.Cells(I, 2).Value = "AMT" Then
If m.Cells(I, 3).Value = p.Cells(J, 1).Value Then
 blnTrouver = True
 Else
  blnTrouver = False
  End If
  End If
    If blnTrouver Then
p.Cells(J, 18).Value = m.Cells(I, 4).Value
Else
 
Comment dire de rajouter la ligne de lcc dans amt ??
 
End If
Next J
Next I
End Sub
 
 
MAis mon gros probléme c'est que je ne sais pas comment dire a la macro de rajouter la ligne qui manque de lcc a amt.
 
Par exemple dans lcc j'ai le code erreur 38 mais pas dans la feuille amt et donc je voudrais rajouter cette ligne dans la feuille amt.

n°2038045
viv207
Posté le 24-11-2010 à 11:34:56  profilanswer
 

Personne pourait m'aider pour l'ajout de la ligne ?
 
Peut être que j'ai mal expliqué
 
Fichier 1                              Fichier 2
Code erreur    Nb erreur          Code erreur    Nb erreur
39                     3                       39
40                      5                      50
50                      1                       55
55                      6                        56            15
 
Au final avec macro je dois avoir dans le fichier 2
 
Fichier 2
Code erreur    Nb erreur          
39                     3                        
40                      5                      
50                      1                        
55                     6
56                    15                        
 
 
Ce qu'il faudrait dans le fichier 2 c'est qu'il recopie le nombre d'erreur à coté du code erreur correspondant (avec la macro que j'ai fait précédement c'est bon) et qu'il rajoute dans ce même fichier 2 les codes erreurs qui sont dans le fichier 1 mais absent du fichier 2, dans mon exemple il manque le code erreur 40  dans le fichier 2
 
 
Donc ma macro permet de recopier les nombre d'erreur à coté du bon code erreur mais il ne rajoute pass les lignes manquantes.
 
Merci d'avance

n°2038047
Xxxaaavvv
Posté le 24-11-2010 à 11:41:02  profilanswer
 

désolé pas trop le temps de répondre en ce moment
 
voici une méthode pour copier, et insérer une ligne


    Sheets("Feuil1" ).Rows("10:10" ).Copy
    Sheets("Feuil2" ).Rows("20:20" ).Insert (xlShiftDown)


à toi de l'adapter.

n°2038049
viv207
Posté le 24-11-2010 à 11:46:48  profilanswer
 

Merci Xxxaaavvv, mais c'est le probléme je n'arrive pas à l'adapter, j'essaye encore puis je vous tiens au courant.

n°2038060
Xxxaaavvv
Posté le 24-11-2010 à 12:37:29  profilanswer
 

Il te faut le numéro de la ligne que tu veux copier
et le numéro de la ligne ou tu veux insérer.
 
ensuite ça va de soi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Aide vba : Comparer deux colonnes A et B et ajouter à B ce qu'il manqu

 

Sujets relatifs
Besoin d'aide pour AutoitBesoin d'aide sur une macro Excel
aide pour assembleurAide réalisation site web
aide pour macro excelAide sur l'execution d'un code en perl
Besoin d'aide pour établir un devis[SQL][Qt] Requet pour compter les colonnes ?
Compilation d'un fichier d'aide HTML (chm)Aide script php + mysql
Plus de sujets relatifs à : Aide vba : Comparer deux colonnes A et B et ajouter à B ce qu'il manqu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR