macro insertion d'une formule sous condition

franck70

XLDnaute Junior
Bonjour à tous.

Je cherche à mettre des formules dans un tableau sous certaines conditions. Ainsi, s'il y a écrit X ou Y dans la 1ère colonne, il ne doit rien faire (pour ne pas écraser les chiffres déjà renseignés). Mais si c'est différent de X ou Y, alors il doit me mettre une formule de vlookup de la 2ème colonne à la 4ème.

A priori, mon problème est que j'utilise InStr alors que c'est pas du tout adapté (mais je ne sais pas quelle est la bonne fonction). Le 2ème problème est de mettre la formule sur le activeCell, alors qu'il faudrait la mettre de la cellule active jusqu'à la colonne D. Il y en a probablement d'autres problèmes, mais je ne les vois pas encore !

Dim q As Integer
For q = Range("A65536").End(xlUp).Row To 2 Step -1
If InStr(OR(Range("A" & q)=""X"",Range("A" & q)=""Y"")=FALSE Then _
ActiveCell.FormulaR1C1 = "=VLOOKUP((Range("A" & q),feuil2!C1:C2,2,FALSE))=TRUE


Pourriez-vous m'aider à corriger ?

Merci d'avance pour votre aide
 

Staple1600

XLDnaute Barbatruc
Re : macro insertion d'une formule sous condition

Bonsoir

Avec PJ c'est mieux...

En l'attendant, essaie en adaptant ceci:
Code:
Sub a()
Dim q As Long
For q = Range("A65536").End(xlUp).Row To 2 Step -1
Range("B" & q).Resize(, 4).FormulaR1C1 = _
IIf((Range("A" & q) <> "X" And Range("A" & q) <> "Y"), "=NOW()", "")
Next q
End Sub

EDITION
: Bonsoir FredOo
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : macro insertion d'une formule sous condition

Bonsoir à tous,

Franck ! avec le peu que tu nous donnes, attends toi à en avoir peu...

VB:
    Dim q As Integer
    For q = Range("A65536").End(xlUp).Row To 2 Step -1
        If InStr(1, Range("A" & q), "X") > 0 Or InStr(1, Range("A" & q), "Y") > 0 Then Range(Cells(q, 2), Cells(q, 4)).FormulaR1C1 = _
            "=VLOOKUP(Range(""A" & q & """),feuil2!C1:C2,2,FALSE)"

A+
 

franck70

XLDnaute Junior
Re : macro insertion d'une formule sous condition

Bonjour à tous,

Merci pour votre aide. Effectivement, avec un fichier, ça sera plus simple, toutes mes excuses..

J'ai essayé ce qu'a indiqué Fred0o, mais il doit y avoir un petit bug dans mon programme.

Le principe est donc de mettre la formule dans le tableau AD à AT si dans la colonne G, il n'est pas indiqué "IMP" ou "RN". Et s'il faut mettre la formule, alors c'est sur toute la ligne.
Je crois que je m'étais également trompé dans les "" sur la formule, mais comme ça bloque avant, je ne sais pas encore si j'ai bien corrigé !

Merci d'avance
 

Pièces jointes

  • Test pour macro.xlsm
    32.6 KB · Affichages: 41

Fred0o

XLDnaute Barbatruc
Re : macro insertion d'une formule sous condition

Bonsoir,

Comme ta formule VLOOKUP est truffée d'erreurs dans le code, peux tu m'écrire la formule telle qu'elle doit apparaitre dans une cellule, une fois la macro exxécutée.

Merci
 

franck70

XLDnaute Junior
Re : macro insertion d'une formule sous condition

Bonsoir Fred0o,

En écrivant la formule pour te la donner, je me suis aperçu qu'il y avait quelques bugs dans ma formule. J'avais eu un peu de mal à la traduire pour l'insérer dans la macro.

Dans le fichier joint, j'ai mis la formule sur les lignes 12 et 15 de la colonne AD à AT. Ca représente exactement ce que je voudrais au final, à savoir qu'il n'y a pas de formule si rien n'est renseigné dans la colonne AG ou si 'il y a "RN" ou "IMP dans cette colonne G.

Merci pour le temps passé à m'aider.
 

Pièces jointes

  • Test pour macro v2.xlsm
    33.5 KB · Affichages: 44

Staple1600

XLDnaute Barbatruc
Re : macro insertion d'une formule sous condition

Bonsoir à tous

frankc70
(Je dois puer du bec sans doute ;), car j'étais déjà passé dans ton fil hier)

Code:
Sub a()
Dim q As Long
For q = Range("G65536").End(xlUp).Row To 11 Step -1
Range("AG" & q).Resize(, 14).FormulaR1C1 = _
IIf((Range("G" & q) <> "IMP" And Range("G" & q) <> "RN"), "=NOW()", "")
Next q
End Sub
PS: Remplacer =NOW() par ta formule

EDITION: Bonsoir FredOo
la formule en une seul passe en R1C1 ? Pas possible ?
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : macro insertion d'une formule sous condition

Re-bonsoir,

Voici le code qui me semble-t-il, fonctionne suivant ta demande.
VB:
Sub Imputation_code_SIS_provisoire()
'
' Imputation_code_SIS Macro
'
' Touche de raccourci du clavier: Ctrl+l
'
    Dim q As Integer, t
    For q = Range("B65536").End(xlUp).Row To 2 Step -1
        t = "=IFERROR($X" & q & "*SUMIF(ISEP!$BR:$BS,$G" & q & "&""/""&LEFT($C" & q & ",5)&""/""&LEFT($B" & q & ",8)&""/""&AD$8,ISEP!$BS:$BS)/SUMIF(ISEP!$BP:$BS,$G" & q & "&""/""&LEFT($C" & q & ",5)&""/""&LEFT($B" & q & ",8),ISEP!$BS:$BS),0)"
        If Not IsEmpty(Range("G" & q)) And InStr(1, Range("G" & q), "RN") = 0 And InStr(1, Range("G" & q), "IMP") = 0 And InStr(1, Range("G" & q), "HEXP") = 0 Then
            Range(Cells(q, 30), Cells(q, 46)).Formula = t
        End If
    Next q
End Sub

Petite question : pourquoi mettre la formule et pas directement le résultat ?

A+

Edit : Salut Staple, d'ici je ne sens rien... En outre, le principal problème dans son code était justement cette fameuse formule, à rallonge. :cool:
 
Dernière édition:

franck70

XLDnaute Junior
Re : macro insertion d'une formule sous condition

Bonjour à tous

Toutes mes excuses à Staple1600 et merci également pour ton aide.

FredOo, ça fonctionne très bien. Merci beaucoup. J'ai pu le mettre sur le vrai fichier.
Il doit effectivement être plus simple de ne pas mettre la formule mais directement le montant. D'ailleurs, ça me pose maintenant un petit problème car je dois copier-coller en valeur seulement les lignes ou j'ai mis la formule, et j'ai peur que ça rende la macro très longue. Peux-tu me dire quelle partie du code je dois modifier ? Je remplacerais bien le "formula" par value, mais je sens que ce serait trop simple !

Merci beaucoup
 

Discussions similaires

Réponses
2
Affichages
119
Réponses
8
Affichages
354
Réponses
2
Affichages
205

Statistiques des forums

Discussions
312 836
Messages
2 092 654
Membres
105 479
dernier inscrit
chaussadas.renaud