Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

RechercheV dans macro

2 réponses
Avatar
Françoise
Bonjour =E0 tous,

je veux faire une macro qui dise :

dans ce dossier
dans chaque feuille except=E9 la feuille "d=E9compteD"=20
et "d=E9comptePU"
positionne toi en derni=E8re ligne
puis en colonne C
Recherche Valeur de la cellule A2 dans "d=E9compteD" "A:E"
Si existe alors
copie valeur colonne C2 dans feuille en cours Colonne C=20
derni=E8re ligne
copie valeur colonne D2 dans feuille en cours Colonne D=20
derni=E8re ligne
Si n'existe pas alors
Recherche Valeur de la cellule A2 dans "d=E9comptePU" "A:E"
Si existe alors
copie valeur colonne D2 dans feuille en cours Colonne C=20
derni=E8re ligne
copie valeur colonne E2 dans feuille en cours Colonne D=20
derni=E8re ligne
Si n'existe pas alors
Passe =E0 la feuille suivante=20
et fais la m=EAme action
---
J'ai test=E9 :
---
Sub MAJStock()
'

Dim DerLig As Long

With Workbooks("MAJStock")
With Worksheets("A920046ASPR")
DerLig =3D .Range("C65536").End(xlUp)(2).Row
Range("C" & DerLig).Select
If .FormulaR1C1 =3D "=3DVLOOKUP($A$2;D=E9compteD!
A:F;3;FALSE)" =3D False Then
.FormulaR1C1 =3D "=3DVLOOKUP($A$2;D=E9comptePU!A:F;3;FALSE)"
ElseIf Nothing Then
End If
End With
End With
End Sub
---
pour UNE feuille mais cela ne fonctionne pas car la=20
formule de recherche n'est pas correctement explicit=E9e
---
COMMENT DOIS JE FAIRE ?
D'avance merci de votre aide =E0 tous
Fran=E7oise

2 réponses

Avatar
isabelle
bonjour Francoise,

est ce que ça irait comme ça ?

Sub Macro1()
For Each f In Sheets
If f.Name <> "décompteD" And f.Name <> "décomptePU" Then

'c'est trois lignes ne sont qu'une seul ligne
D = Evaluate("IF(ISERROR(VLOOKUP(" & f.Name & _
"!A2,décompteD!A:D,3,TRUE)),"""",VLOOKUP(" & _
f.Name & "!A2,décompteD!A:D,3,TRUE))")

'c'est trois lignes ne sont qu'une seul ligne
PU = Evaluate("IF(ISERROR(VLOOKUP(" & f.Name & _
"!A2,décomptePU!A:D,3,TRUE)),"""",VLOOKUP(" & _
f.Name & "!A2,décomptePU!A:D,3,TRUE))")

If D <> "" Then
Range("C" & Range("C65536").End(xlUp).Row) = [C2]
Range("D" & Range("D65536").End(xlUp).Row) = [D2]
ElseIf PU <> "" Then
Range("C" & Range("C65536").End(xlUp).Row) = [D2]
Range("D" & Range("D65536").End(xlUp).Row) = [E2]
End If
Next
End Sub

isabelle


Bonjour à tous,

je veux faire une macro qui dise :

dans ce dossier
dans chaque feuille excepté la feuille "décompteD"
et "décomptePU"
positionne toi en dernière ligne
puis en colonne C
Recherche Valeur de la cellule A2 dans "décompteD" "A:E"
Si existe alors
copie valeur colonne C2 dans feuille en cours Colonne C
dernière ligne
copie valeur colonne D2 dans feuille en cours Colonne D
dernière ligne
Si n'existe pas alors
Recherche Valeur de la cellule A2 dans "décomptePU" "A:E"
Si existe alors
copie valeur colonne D2 dans feuille en cours Colonne C
dernière ligne
copie valeur colonne E2 dans feuille en cours Colonne D
dernière ligne
Si n'existe pas alors
Passe à la feuille suivante
et fais la même action
---
J'ai testé :
---
Sub MAJStock()
'

Dim DerLig As Long

With Workbooks("MAJStock")
With Worksheets("A920046ASPR")
DerLig = .Range("C65536").End(xlUp)(2).Row
Range("C" & DerLig).Select
If .FormulaR1C1 = "=VLOOKUP($A$2;DécompteD!
A:F;3;FALSE)" = False Then
.FormulaR1C1 = "=VLOOKUP($A$2;DécomptePU!A:F;3;FALSE)"
ElseIf Nothing Then
End If
End With
End With
End Sub
---
pour UNE feuille mais cela ne fonctionne pas car la
formule de recherche n'est pas correctement explicitée
---
COMMENT DOIS JE FAIRE ?
D'avance merci de votre aide à tous
Françoise


Avatar
isabelle
j'oubliais une ligne de commande,

Sub Macro1()
For Each f In Sheets
If f.Name <> "décompteD" And f.Name <> "décomptePU" Then
f.Select <------- celle-ci

isabelle