XL 2016 Insérer dans des cellules une formule avec une boucle

treza88

XLDnaute Occasionnel
bonjour a tous,

j'ai essaier d'inserer dans une zone de cellule dans une colonne en incrementant l'adresse de cellule a l'interieur de ma formule, mais ça ne fonctionne pas.
Voici mon bout de code avec la formule:

VB:
 ligne = Val(Mid(AdresCel, 4, 1))
  
   Range(AdresCel).Formula = "=SI(F" & ligne & "="";"";ARRONDI.SUP(H" & ligne & "*RECHERCHEV(E" & ligne & ";Identification!F$9:H$276;3;FAUX);0))"

Pour info la formule d'origine est celle ci :
=SI(F5="";"";ARRONDI.SUP(H5*RECHERCHEV(E5;Identification!F$9:H$276;3;FAUX);0))

Merci pour vos infos.
 
Dernière édition:

Yeahou

XLDnaute Accro
Supporter XLD
Bonjour Treza88, le forum

Vba n'aime pas le français, voila la traduction littérale de ton code, quant à savoir si cela donnera ce que tu attends, sans fichier exemple, impossible de le savoir

Bien cordialement, @+
VB:
Range(AdresCel).FormulaR1C1 = "=IF(R" & ligne & "C[5]="""","""",ROUNDUP(R" & ligne & "C[7]*VLOOKUP(R" & ligne & "C[4],Identification!R9C[5]:R276C[7],3,FALSE),0))"
 

Yeahou

XLDnaute Accro
Supporter XLD
j'ai écris en coordonnées RC, R les lignes, C les colonnes, l'équivalent de Cells(ligne,colonne)
en exemple, la cellule A1 est R1C1 en absolu, l'équivalent de $A$1 , la cellule B1 est R1C2 en absolu
quand le chiffre est entre croches veut dire que la coordonnée est relative à la cellule contenant la formule
quand il n'y a pas de chiffre, même colonne ou même ligne selon sur R ou sur C que la cellule contenant la formule.
plus pratique comme cela quand on travaille avec Cells et Offset en Vba
 

Yeahou

XLDnaute Accro
Supporter XLD
j'ai gardé ton param ligne pour respecter ta commande mais celle la fait la même chose, pas besoin de spécifier la ligne puisque c'est la même.
tu peux par contre avoir un problème avec ton tableau de recherche qui n'est pas fixe mais sans fichier, impossible de savoir si c'est normal ou une erreur
VB:
Range(AdresCel).FormulaR1C1 = "=IF(RC[5]="""","""",ROUNDUP(RC[7]*VLOOKUP(RC[4],Identification!R9C[5]:R276C[7],3,FALSE),0))"
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Si vous voulez utiliser la française syntaxe, au lieu d'utiliser .Formula, utiliser .FormulaLocal

Après, sans fichier, on ne sait pas si votre formule est correcte.

Concernant le recours à une boucle, il y a de grandes chances qu'on puisse s'en passer, mais sans fichier... Toutefois voici trois exemples de ce qu'on peux faire :
VB:
Sub Essai()
   Range("a1").FormulaLocal = "=max(ligne(a1);10)"
   Range("a1").AutoFill Destination:=Range("a1:a30")
End Sub
ou
[CODE=vb]Sub Essai()
   Range("a1").FormulaLocal = "=max(ligne(a1);10)"
   Range("a1:a30").Formula = Range("a1").Formula
End Sub
ou
VB:
Sub essai3()
   Range("a1:a30").FormulaLocal = "=max(ligne(a1);10)"
End Sub
 
Dernière édition:

treza88

XLDnaute Occasionnel
Bonsoir,
Comme prévu voici le fichier
J'ai trouvé a le faire fonctionner, mai si vous pouvez donner votre avis sur mon code.
Mon code sélectionne les cellule de la colonne "I" sans formule pour en mettre une et ceci dans les 3 feuilles
Merci d'avance
Et merci a vous deux
Pour exécuter le code il faut la lancer dans VBA editor dans le module 1
 

Pièces jointes

  • boucle formule.xlsm
    104.4 KB · Affichages: 0

Discussions similaires

Haut Bas