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
 

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


Sub MAJ_RF()
Dim c1 As Range, c2 As Range
Dim Exist As Byte
Dim ws1 As Worksheet
Dim ws2 As Worksheet



Set ws1 = Sheets('Rolling_Forecast')
Set ws2 = Sheets('Extract_AFU')

ws1.Cells.RemoveSubtotal

For Each c2 In ws2.Range('c2:c' & ws2.Range('c65536').End(xlUp).Row)
        Exist = 0
       
For Each c1 In ws1.Range('e10:e' & ws1.Range('e65536').End(xlUp).Row)
               
               
If c2 = c1 Then Exist = 1
       
Next c1

       
If Exist = 0 Then
               
With ws1
                        .Range('e' & .Range('e65536').End(xlUp).Row + 1) = c2
               
End With
       
End If
Next c2

End Sub


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

Membres actuellement en ligne

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 695
dernier inscrit
acimi