Soustraction recherchev boucle

Bonjour à tous,

Je n'ai pas trouvé de réponse sur internet donc voici ma question :

Je souhaite faire la soustraction du résultat de 2 recherchev dans une cellule et descendre la formule dans les cellules suivantes.

J'ai essayé avec le bout de code suivant sans succès :

With Sheets("Vérif" )

For i = 2 To 4

.Range("I" & i).Value = WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("Feuil1" ).Range("A:O" ), 15, False) - WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("Feuil2" ).Range("A:K" ), 11, False)

Next i

End With

A savoir que sans la boucle, j'arrive à faire la différence de 2 recherchev. Avec la boucle, je peux juste faire une recherchev mais sans la différence...

Avez-vous une idée svp?

bonjour

unn petit fichier de 3 colonnes et 5 lignes, et le résultat attendu STP

à te relire

amitiés

Bonjour jmd,

Voici un fichier joint.

Dans les onglets "Feuil1" et "Feuil2", il y a une liste avec un identifiant commun. C'est dans l'onglet "Feuil3" que je souhaite avoir la différence des nombres de "Feuil" et "Feuil2" pour chaque identifiant.

Je te laisse ouvrir le fichier, ce sera certainement beaucoup plus clair

30exemple.xlsx (9.24 Ko)

Slt Etienne,

Slt jmd,

mais ca fonctionne sur ton fichier exemple:

Range("I" & i).Value = WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("Feuil1" ).Range("A:O" ), 15, False) - WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("Feuil2" ).Range("A:K" ), 11, False)

Il faut adapter l'index des colonnes 15 ==>2 et 11 ==> 2

Sub test()
With Sheets("feuil1")
For i = 2 To 4

.Range("I" & i).Value = WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("Feuil1").Range("A:O"), 2, False) - _
WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("Feuil2").Range("A:K"), 2, False)
Next i

End With
End Sub

Hello,

Effectivement, ça fonctionne dans le fichier test. Je viens de comprendre le problème :

lorsque la rechercheV ne trouve pas de résultat (affichage #N/A normalement dans les cellules), la macro plante.

J'ai refait le fichier avec plus de ligne et anonymisé. En ligne 24, la recherchev ne trouve pas de correspondance et plante donc.

Tu as une idée de la manière dont je peux soit forcer la macro à continuer soit faire en sorte qu'elle ne prenne pas en compte ces #N/A?

20controle-v4b-vba.xlsx (305.02 Ko)

Avec la macro

With Sheets("V1")

For i = 2 To 4

.Range("I" & i).Value = WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("H1").Range("A:O"), 15, False) - WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("C1").Range("A:K"), 11, False)

Next i

End With

End Sub

Slt,

un essai

Sub test()

On Error Resume Next

With Sheets("V1")
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
.Range("I" & i).Value = WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("H1").Range("A:O"), 15, False) - WorksheetFunction.VLookup(.Range("A" & i).Value, Sheets("C1").Range("A:K"), 11, False)
Next i
End With

End Sub

Ca semble bien fonctionner.

Je vais tester sur les autres colonnes de mon fichier car j'ai environ 15 colonnes avec des recherchev.

Tu peux me dire à quoi correspond "On Error Resume Next" et "lRow = .Cells(Rows.Count, 1).End(xlUp).Row"?

Dans tous les cas merci beaucoup!

Tu peux me dire à quoi correspond "On Error Resume Next" et "lRow = .Cells(Rows.Count, 1).End(xlUp).Row"?

"On Error Resume Next": on ignore l'erreur et on continue l'exécution du programme.

"lRow = .Cells(Rows.Count, 1).End(xlUp).Row" calculer la dernière céllule non vide de l'onglet "V1" afin que la boucle tourne jusqu'à cette dernière céllule

Encore merci!

Je viens de dupliquer et ça fonctionne très bien!

Rechercher des sujets similaires à "soustraction recherchev boucle"