Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

comparer deux colonnes et copier les manquants

flo2002

XLDnaute Impliqué
Re bonjour à tous,

encore une macro bancale mais qui doit pas etre loin de fonctionner. Un coup d'oeil d'expert doit suffir.

Sub MAJ_RF()

Sheets('Extract_AFU').Visible = True
Sheets('Rolling_Forecast').Select
Cells.Select
Selection.RemoveSubtotal
Range('a1').Select

Dim Derligne1%, Derligne2%
Dim i1%, i2%
Dim Exist
Derligne1 = Sheets('Rolling_Forecast').Range('e65536').End(xlUp).Row
Derligne2 = Sheets('Extract_AFU').Range('c65536').End(xlUp).Row
For i2 = 1 To Derligne2
For i1 = 1 To Derligne1
If Sheets('Extract_AFU').Range('c2' & i2) = Sheets('Rolling_Forecast').Range('e10' & i1) Then
Exist = 1
GoTo Suivant
End If
Next
If Exist = 1 Then GoTo Suivant
Sheets('Rolling_Forecast').Range('e10' & Derligne1 + 1) = Sheets('Extract_AFU').Range('c2' & i2)
Derligne1 = Sheets('Rolling_Forecast').Range('e65536').End(xlUp).Row
Suivant:
Exist = 0
Next


Sheets('Extract_AFU').Visible = False
End Sub

Merci d'avance!

si besoin je peux donner plus d'explication quand à sa fonction.
 

Hervé

XLDnaute Barbatruc
bonjour

sans avoir approfondie ton code :

If Sheets('Extract_AFU').Range('c2' & i2) = Sheets('Rolling_Forecast').Range('e10' & i1) Then

ceci ne fonctionne pas, essayes comme ca :

If Sheets('Extract_AFU').Range('c' & i2) = Sheets('Rolling_Forecast').Range('e' & i1) Then

salut
 

flo2002

XLDnaute Impliqué
Merci Hervé

c'est effectivemnt la qu'est le probleme mais meme corrigé il me met toujours erreur d'excution 13.

Je continu mes recherche


De plus je viens de rendre compte qu'il ne supprime pas les doublons. Ennuyeux.

Message édité par: flo2002, à: 13/06/2006 13:47
 

Hervé

XLDnaute Barbatruc
re flo


as tu corrigé ici aussi :

Sheets('Rolling_Forecast').Range('e10' & Derligne1 + 1) = Sheets('Extract_AFU').Range('c2' & i2)

regarde la ligne en jaune lors du déboggage.

salut
 

Gorfael

XLDnaute Barbatruc
Salut flo2002 , Hervé

Juste une question à flo2002 en passant : Pourquoi tu n'effectues pas ta macro en Pas à Pas ? avec la ligne posant problème, tu corrigerais nettement plus vite, non ?
A+
 

flo2002

XLDnaute Impliqué
En faite quand je corrige une ligne c'est l'autre qui est surligner.
Etrange.
En faite, il doit comparer dans rolling_forecast la plage e10:dern lign avec dans extract_afu C2:dern lign. et me mettre ceux qu'il ne trouve pas à la suite de E dans rolling forecast.

En tout cas c'est ce que je lui demande.

merci d'avance.
 

Hervé

XLDnaute Barbatruc
re flo, salut gorfael


ma vision des choses




salut
 

flo2002

XLDnaute Impliqué
Incompatibilité de type sur If c2 = c1 Then

Ne faut - il pas sauter une ligne après then?
Quand je le fais il me dit then sans for.

Merci de ton implication

je viens de voire que j'ai mis une formule en colonne c et que c'est en dure en E. est ce un probleme?

Message édité par: flo2002, à: 13/06/2006 14:40
 

Hervé

XLDnaute Barbatruc
re

ben mon implication va etre breve, vu que chez moi ca fonctionne

l'erreur 13 provient généralement d'un mauvais 'typage' de variable, par exemple, ce code provoque une erreur 13 :

Dim nombre As Byte
nombre = 'toto'

car le code atteint un chiffre (byte) et trouve du texte('toto').

dans ton cas c1 et c2 correspondent à des cellules de leurs boucles for each respective, et sont bien typé range(dim c1 as range...)

donc vraiment bizarre.

pour la syntaxe d'un if then il existe deux variantes :

1) sur une seule ligne et donc sans end if :
if ceci then faire cela
2) sur deux lignes avec donc un end if afin de cloturer le bloc d'instruction :
if ceci then
faire celà
end if

dans ce code je n'ai pas d'erreur de syntaxe.

regarde du coté de tes déclaration.

salut
 

flo2002

XLDnaute Impliqué
Merci beaucoup je crois je commence à comprendre.

mon incompatibilité vient certaniement de cette formule: =SI(A2='';'';A2&O2)

puisque j'ai un & il se dit que c'est dy texte donc ca me va. mais de l'autre coté c'est en dure donc ni texte aussi.

Bizar en effet.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…