Question technique pour les pros.... Avec la formule suivante, je suis à
même de connaitre quels sont les no de comptes apparaissant sur une page,
mais pas sur l'autre....
Deux p'tites questions pour vous:
1) Je dois copier cette formule jusqu'en bas pour avoir le résultat
souhaité. Dans mon cas, on parle environ jusqu'à la ligne 5000. Comment
puis-je le faire automatiquement et préférablement en VBA? Car je recevrai
une feuille chaque semaine.....
2) Les no de compte apparaissent sur différentes lignes dépendamment s'ils
sont la feuille ou non (s'ils y sont, le résultat de la cellule est vide).
Commant faire alors pour que si la cellule contient un no de compte et non ""
que ces numéros s'incrivent les uns à la suite des autres dans une autre
colonne?
Eurekâ!!! Grand merci à Frédéric Sigonneau et à son site.(ainsi que l'auteur de la macro).... J'y ai trouvé ma réponse....que voici.....
Sub CompareAEtB() 'Tom Ogilvy, mpep Dim rngA As Range Dim rngB As Range Dim rw As Long
Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
rw = 2 For Each cell In rngB If Application.CountIf(rngA, cell.Value) = 0 Then Cells(rw, 3).Value = cell.Value rw = rw + 1 End If Next End Sub
La macro cherche les nos différents et les copie dans la colonne C.... Merveilleux..
Bonne soirée
Denys
Daniel.M
Salut Denys,
Merci de partage ta réponse et ton enthousiasme :-) On peut aussi avoir recours à une formule, sans itération : ce qui en fait une méthode plutôt rapide.
Exemple: Sub ListeValeursEnB_MaisPasEnA() ListeValeursDifferentes _ Intersect(Range("B:B"), ActiveSheet.UsedRange), _ Intersect(Range("A:A"), ActiveSheet.UsedRange), _ Range("C1") End Sub
' En Plage1 mais pas en Plage2 Sub ListeValeursDifferentes(Plage1 As Range, Plage2 As Range, PlageOUT As Range) Dim Plage2_ As String, R_ As String
With PlageOUT.Resize(Plage1.Rows.Count, 1) ' endroit choisi pour résultats .Formula = "=IF(ISNA(MATCH(" & R_ & "," & Plage2_ & ",0))," & R_ & ","""")" .Value = .Value .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, header:=xlNo End With End Sub
Salutations,
Daniel M.
"Denys" wrote in message news:
Rebonjour à tous,
Eurekâ!!! Grand merci à Frédéric Sigonneau et à son site.(ainsi que l'auteur de la macro).... J'y ai trouvé ma réponse....que voici.....
Sub CompareAEtB() 'Tom Ogilvy, mpep Dim rngA As Range Dim rngB As Range Dim rw As Long
Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
rw = 2 For Each cell In rngB If Application.CountIf(rngA, cell.Value) = 0 Then Cells(rw, 3).Value = cell.Value rw = rw + 1 End If Next End Sub
La macro cherche les nos différents et les copie dans la colonne C.... Merveilleux..
Bonne soirée
Denys
Salut Denys,
Merci de partage ta réponse et ton enthousiasme :-)
On peut aussi avoir recours à une formule, sans itération : ce qui en fait une
méthode plutôt rapide.
Exemple:
Sub ListeValeursEnB_MaisPasEnA()
ListeValeursDifferentes _
Intersect(Range("B:B"), ActiveSheet.UsedRange), _
Intersect(Range("A:A"), ActiveSheet.UsedRange), _
Range("C1")
End Sub
' En Plage1 mais pas en Plage2
Sub ListeValeursDifferentes(Plage1 As Range, Plage2 As Range, PlageOUT As Range)
Dim Plage2_ As String, R_ As String
Merci de partage ta réponse et ton enthousiasme :-) On peut aussi avoir recours à une formule, sans itération : ce qui en fait une méthode plutôt rapide.
Exemple: Sub ListeValeursEnB_MaisPasEnA() ListeValeursDifferentes _ Intersect(Range("B:B"), ActiveSheet.UsedRange), _ Intersect(Range("A:A"), ActiveSheet.UsedRange), _ Range("C1") End Sub
' En Plage1 mais pas en Plage2 Sub ListeValeursDifferentes(Plage1 As Range, Plage2 As Range, PlageOUT As Range) Dim Plage2_ As String, R_ As String
With PlageOUT.Resize(Plage1.Rows.Count, 1) ' endroit choisi pour résultats .Formula = "=IF(ISNA(MATCH(" & R_ & "," & Plage2_ & ",0))," & R_ & ","""")" .Value = .Value .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, header:=xlNo End With End Sub
Salutations,
Daniel M.
"Denys" wrote in message news:
Rebonjour à tous,
Eurekâ!!! Grand merci à Frédéric Sigonneau et à son site.(ainsi que l'auteur de la macro).... J'y ai trouvé ma réponse....que voici.....
Sub CompareAEtB() 'Tom Ogilvy, mpep Dim rngA As Range Dim rngB As Range Dim rw As Long
Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
rw = 2 For Each cell In rngB If Application.CountIf(rngA, cell.Value) = 0 Then Cells(rw, 3).Value = cell.Value rw = rw + 1 End If Next End Sub
La macro cherche les nos différents et les copie dans la colonne C.... Merveilleux..
Bonne soirée
Denys
Denys
Bonsoir Daniel,
Content d'avoir de tes nouvelles... Et comme d'habitude, tu me donnes une version améliorée !!! C'est très chic de ta part, et tu peux être sûr que je vais l'utilliser demain au bureau...
Encore une fois merci.... et bonne année !!!!
Denys
Salut Denys,
Merci de partage ta réponse et ton enthousiasme :-) On peut aussi avoir recours à une formule, sans itération : ce qui en fait une méthode plutôt rapide.
Exemple: Sub ListeValeursEnB_MaisPasEnA() ListeValeursDifferentes _ Intersect(Range("B:B"), ActiveSheet.UsedRange), _ Intersect(Range("A:A"), ActiveSheet.UsedRange), _ Range("C1") End Sub
' En Plage1 mais pas en Plage2 Sub ListeValeursDifferentes(Plage1 As Range, Plage2 As Range, PlageOUT As Range) Dim Plage2_ As String, R_ As String
With PlageOUT.Resize(Plage1.Rows.Count, 1) ' endroit choisi pour résultats .Formula = "=IF(ISNA(MATCH(" & R_ & "," & Plage2_ & ",0))," & R_ & ","""")" .Value = .Value .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, header:=xlNo End With End Sub
Salutations,
Daniel M.
"Denys" wrote in message news:
Rebonjour à tous,
Eurekâ!!! Grand merci à Frédéric Sigonneau et à son site.(ainsi que l'auteur de la macro).... J'y ai trouvé ma réponse....que voici.....
Sub CompareAEtB() 'Tom Ogilvy, mpep Dim rngA As Range Dim rngB As Range Dim rw As Long
Set rngA = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) Set rngB = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
rw = 2 For Each cell In rngB If Application.CountIf(rngA, cell.Value) = 0 Then Cells(rw, 3).Value = cell.Value rw = rw + 1 End If Next End Sub
La macro cherche les nos différents et les copie dans la colonne C.... Merveilleux..
Bonne soirée
Denys
Bonsoir Daniel,
Content d'avoir de tes nouvelles... Et comme d'habitude, tu me donnes une
version améliorée !!! C'est très chic de ta part, et tu peux être sûr que je
vais l'utilliser demain au bureau...
Encore une fois merci.... et bonne année !!!!
Denys
Salut Denys,
Merci de partage ta réponse et ton enthousiasme :-)
On peut aussi avoir recours à une formule, sans itération : ce qui en fait une
méthode plutôt rapide.
Exemple:
Sub ListeValeursEnB_MaisPasEnA()
ListeValeursDifferentes _
Intersect(Range("B:B"), ActiveSheet.UsedRange), _
Intersect(Range("A:A"), ActiveSheet.UsedRange), _
Range("C1")
End Sub
' En Plage1 mais pas en Plage2
Sub ListeValeursDifferentes(Plage1 As Range, Plage2 As Range, PlageOUT As Range)
Dim Plage2_ As String, R_ As String
Content d'avoir de tes nouvelles... Et comme d'habitude, tu me donnes une version améliorée !!! C'est très chic de ta part, et tu peux être sûr que je vais l'utilliser demain au bureau...
Encore une fois merci.... et bonne année !!!!
Denys
Salut Denys,
Merci de partage ta réponse et ton enthousiasme :-) On peut aussi avoir recours à une formule, sans itération : ce qui en fait une méthode plutôt rapide.
Exemple: Sub ListeValeursEnB_MaisPasEnA() ListeValeursDifferentes _ Intersect(Range("B:B"), ActiveSheet.UsedRange), _ Intersect(Range("A:A"), ActiveSheet.UsedRange), _ Range("C1") End Sub
' En Plage1 mais pas en Plage2 Sub ListeValeursDifferentes(Plage1 As Range, Plage2 As Range, PlageOUT As Range) Dim Plage2_ As String, R_ As String