OVH Cloud OVH Cloud

Vlookup....entre autres

3 réponses
Avatar
Denys
Bonjour à tous,

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....

=IF(ISNA(VLOOKUP('Dec-20'!A7,'Dec-29'!A:A,1,FALSE)),'Dec-20'!A7,"")

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?

J'espère que ce n'est pas trop compliqué...

Merci

Denys

3 réponses

Avatar
Denys
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
Avatar
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

Plage2_ = Plage2.Address
R_ = Plage1(1, 1).Address(0, 0) ' Adresse Relative 1ère cell de Plage1

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


Avatar
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

Plage2_ = Plage2.Address
R_ = Plage1(1, 1).Address(0, 0) ' Adresse Relative 1ère cell de Plage1

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