XL 2013 VBA Vlookup

mmalzert

XLDnaute Occasionnel
Bonjour,

Je galère avec un code tout simple.
Code:
ActiveCell.FormulaR1C1 = _
  "=IF(AND(ISNUMBER(&'D10'&*1),&'D10'&<>0),IF(ISERROR(VLOOKUP(&'D10'&*1,[Charges_A_Ignorer.xlsx]Feuil1!&'a1'&:&'a300'&,1,FALSE)),&'X'&,&''&),&''&)"

Sans VBA, la formule est :
Code:
=si(et(estnum(a1*1);a1<>0);si(esterreur(recherchev(a1*1;[Charges_A_Ignorer.xlsx]Feuil1!$A:$A;1;faux));"x";"");"")

Franchement je ne sais pas trop si la synthaxe est correcte non plus.
Je veux bien un coup de main pour avancer.

Mon code entier si ca peut aider.
Code:
Sub MAJ_Compte()

Dim Rep As String, Fichier As String
NomPrinc = ActiveWorkbook.Name
NomPrincOnglet = ActiveSheet.Name
Dim ws As Worksheet


Chemin = InputBox("Répertoire de mise à jour", "Seléction du chemin d'accès")
Fichier = Dir(Chemin & "\*.*")

Application.ScreenUpdating = False
Application.DisplayAlerts = False


'------------------------------------------------------------------------------------------------------------------------
Do While Fichier <> ""
  
  Workbooks.Open Filename:=Chemin & "\" & Fichier, UpdateLinks:=0
  ActiveWorkbook.Sheets("Kosten_Costs").Activate
 

  With activeWorkbooks
  Range("aa10").Select
ActiveCell.FormulaR1C1 = _
  "=IF(AND(ISNUMBER(&'D10'&*1),&'D10'&<>0),IF(ISERROR(VLOOKUP(&'D10'&*1,[Charges_A_Ignorer.xlsx]Feuil1!&'a1'&:&'a300'&,1,FALSE)),&'X'&,&''&),&''&)"
  
  
  
Range("AA10").Select
  Selection.Copy
  Range(Selection, Selection.End(xlDown)).Select
  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
  SkipBlanks:=False, Transpose:=False
'Range("AA10").Select
'  Range(Selection, Selection.End(xlDown)).Select
'  Selection.Copy
'  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
'  :=False, Transpose:=False
  
 

  Range("d10").Select
  ActiveWorkbook.Save
  ActiveWindow.Close



Fichier = Dir

  
End With
Loop

Merci pour votre aide.
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Certains pourront peut être, mais moi, perso, vu mon niveau en VBA, je ne peux pas voir d'où vient le pb sans un petit fichier exemple... Il ni y a pas forcément besoin du fichier réel, juste un exemple simplifié ayant la même structure...

@ plus
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir mmalzert, CISCO


@mmalzert: quelques erreurs à corriger. Evite tous ces Select.

VB:
With ActiveSheet
.Range("aa10").Formula = Ta formule
.Range("aa10").Copy .Range("aa11")
.Range("aa11").AutoFill .Range("aa11:aa" & .Range("aa65536").End(xlDown).Row)
End With

Application.DisplayAlerts = False
ActiveWorkbook.Close True
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour à tous

-> Loup Solitaire
Quitte à éviter les Select, autant aussi éviter la copie et l'AutoFil, non ? ;)
VB:
Sub Macro1()
' Staple1600 -juillet 2016

Dim strFormul$
strFormul = "=IF(NOT(AND(ISNUMBER(RC[-1]*1),RC[-1]<>0)),"""",VLOOKUP(RC[-1],Feuil2!RC[-1]:R[8]C,2,0))"
  
With Feuil1
  .Range("B2:B" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = strFormul
End With
End Sub

NB: Ceci n'est qu'un code exemple avec une variante de formule.
Donc faire les ajustements nécessaires pour le classeur réel.
 

Discussions similaires

Réponses
2
Affichages
124

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal