comparer 2 cellules de 2 onglets dans une macro

jayet

XLDnaute Nouveau
Bonjour,
Je recherche un solution à mon problème.
Je dois comparer 2 cellules de 2 onglets du même fichier et si égale ajouter une ligne et copier différente cellule.
En lançant la macro, celle-ci bug à la comparaison, voivi le code :

Sub report()
'tableau mp

Dim a As Long
Dim b As Long
Dim i As Long

a = 1
Do
a = a + 1
b = 2
For i = 2 To 95000

If EQUIP!Range("D" & b).Value = Marteau!Range("D" & a).Value Then
Marteau!Rows("a;a").Select
Selection.Copy
Marteau!Rows("a:a").Select
Selection.Insert Shift:=xlDown

Sheets("EQUIP").Select
Range("B" & b).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("MARTEAU").Select
Range("B" & a).Select
ActiveSheet.Paste
Sheets("EQUIP").Select
Range("J" & b).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("MARTEAU").Select
Range("J" & b).Select
ActiveSheet.Paste

Else
b = b + 1
End If
Next i

Quelqu'un pourrait-il regarder mon code et me dire ou est mon erreur.

Merci d'avance.

Lionel
 

jayet

XLDnaute Nouveau
Re : comparer 2 cellules de 2 onglets dans une macro

Merci de ton intervention,

EQUIP et MARTEAU sont les noms des onglets.
J'ai modifié les onglets pour que la taille passe mais le principe ne change pas.

Merci.

Lionel
 

Pièces jointes

  • DETAIL DE LA MP ST exceld.XLS
    36.5 KB · Affichages: 65
  • DETAIL DE LA MP ST exceld.XLS
    36.5 KB · Affichages: 64
  • DETAIL DE LA MP ST exceld.XLS
    36.5 KB · Affichages: 67

jayet

XLDnaute Nouveau
Re : comparer 2 cellules de 2 onglets dans une macro

Le principe est le suivant:
a et b sont des variables
La cellule D,a de l'onglet MARTEAU est comparé à la cellule D,b le l'onglet EQUIP.
Si les cellules sont identiques, alors on copie la ligne a de l'onglet MARTEAU et on l'insere juste en dessous. On copie ensuite 2 cellules le l'onglet EQUIP et on les copie dans l'onglet MARTEAU.
On incremente b afin de verifié si la cellule D,b+1 n'est pas aussi égale à la cellule D,a et ainsi de suite sur les 55000 lignes d'onglet EQUIP.
Au bout des 55000 lignes, on incremente la variable a pour traiter la ligne suivante le l'onglet MARTEAU et on recommence la vérification ci dessous.

En somme, il y a 2 boucles l'un dans l'autre.

Lionel
 

croco40

XLDnaute Occasionnel
Re : comparer 2 cellules de 2 onglets dans une macro

Le principe est le suivant:
a et b sont des variables
La cellule D,a de l'onglet MARTEAU est comparé à la cellule D,b le l'onglet EQUIP.
Si les cellules sont identiques, alors on copie la ligne a de l'onglet MARTEAU et on l'insere juste en dessous. On copie ensuite 2 cellules le l'onglet EQUIP et on les copie dans l'onglet MARTEAU.
On incremente b afin de verifié si la cellule D,b+1 n'est pas aussi égale à la cellule D,a et ainsi de suite sur les 55000 lignes d'onglet EQUIP.
Au bout des 55000 lignes, on incremente la variable a pour traiter la ligne suivante le l'onglet MARTEAU et on recommence la vérification ci dessous.

En somme, il y a 2 boucles l'un dans l'autre.

Lionel
Pas tres clair, mais voici quelques corrections à ta macro.
Sub report()
'tableau mp

Dim a As Long
Dim b As Long
Dim i As Long

a = 1
Do
a = a + 1
b = 2
For i = 2 To 65000

If Sheets("EQUIP").Range("D" & b).Value = Sheets("MARTEAU").Range("D" & a).Value Then
Sheets("MARTEAU").Rows("a;a").Select
Selection.Copy
Sheets("MARTEAU").Rows("a:a").Select
Selection.Insert Shift:=xlDown

Sheets("EQUIP").Select
Range("B" & b).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("MARTEAU").Select
Range("B" & a).Select
ActiveSheet.Paste
Sheets("EQUIP").Select
Range("J" & b).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("MARTEAU").Select
Range("J" & b).Select
ActiveSheet.Paste

Else
b = b + 1
End If
Next i

Loop Until Sheets("MARTEAU").Range("A" & a).Value <> ""

End Sub
 

croco40

XLDnaute Occasionnel
Re : comparer 2 cellules de 2 onglets dans une macro

Pas tres clair, mais voici quelques corrections à ta macro.
Sub report()
'tableau mp

Dim a As Long
Dim b As Long
Dim i As Long

a = 1
Do
a = a + 1
b = 2
For i = 2 To 65000

If Sheets("EQUIP").Range("D" & b).Value = Sheets("MARTEAU").Range("D" & a).Value Then
Sheets("MARTEAU").Rows("a;a").Select
Selection.Copy
Sheets("MARTEAU").Rows("a:a").Select
Selection.Insert Shift:=xlDown

Sheets("EQUIP").Select
Range("B" & b).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("MARTEAU").Select
Range("B" & a).Select
ActiveSheet.Paste
Sheets("EQUIP").Select
Range("J" & b).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("MARTEAU").Select
Range("J" & b).Select
ActiveSheet.Paste

Else
b = b + 1
End If
Next i

Loop Until Sheets("MARTEAU").Range("A" & a).Value <> ""

End Sub
Le probleme est que dans ton fichier il n'ya a jamais d'egalite, donc pour tester ta macro, c'est pas facile.
Suerte
Croco
 

croco40

XLDnaute Occasionnel
Re : comparer 2 cellules de 2 onglets dans une macro

Apres reflexion, je pense qu'on ne peux pas faire cette double verif de cette façon.
Essaie de faire un fichier simple avec par exemple 2 onglets de 4 colones et une quinzaine de lignes pour lesquelles il y a une occurrence. Sinon on ne peux pas verifier variable apres variable la fiabilite du resultat.
Je sais que je me repete en disant aux excelleurs de faire des fichiers simples et de les appliquer ensuite a des fichiers plus cosequants, mais c'est ainsi que j'ai appris, et c'est vrai que c'est plus simple. En plus on bousille pas son fichier source, qui souvent est important.
Suerte
Croco

Et après j'étudierais l'ortographe et la grammaire lol
 

jayet

XLDnaute Nouveau
Re : comparer 2 cellules de 2 onglets dans une macro

J'ai modifier le fichier source afin de pouvoir faire des tests mais j'ai une erreur 1004 sur Sheets("MARTEAU").Rows("a:a").Select

Lionel
 

Pièces jointes

  • DETAIL DE LA MP ST exceld.XLS
    37.5 KB · Affichages: 91
  • DETAIL DE LA MP ST exceld.XLS
    37.5 KB · Affichages: 92
  • DETAIL DE LA MP ST exceld.XLS
    37.5 KB · Affichages: 92

croco40

XLDnaute Occasionnel
Re : comparer 2 cellules de 2 onglets dans une macro

J'ai modifier le fichier source afin de pouvoir faire des tests mais j'ai une erreur 1004 sur Sheets("MARTEAU").Rows("a:a").Select

Lionel

Salut,
Tout ca n'est pas tres clair.
Toutefois lorsque tu mets Sheets("MARTEAU").Rows("a:a").Select
tu lui demande de selection la premiere ligne en lui donnant des cibles colonnes.
Pour utiliser une variable comme lignes donc avec rows, il ne doit pas y avoir de guillemets. Mais dans ton exemple, ce n'est pas bon.
Peux-tu faire un fichier avec 3 ou 4 colonnes et 10 lignes maxi avec kelkes occurences en disant ce que tu as et ce que tu voudrais car je ne sais pas de koi ca parle, et je n'imagine pas le resultat, supprime les colonnes qui ne font pas partie de la comparaison (toutes sauf une)
Je pense que ta macro n'est pas bonne en l'etat car il va y avoir des problemes lorsque la premiere occurence est trouvée et copiée.
Deplus ca risque de ramer
Suerte
Croco
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 943
Membres
103 679
dernier inscrit
yprivey3