[VBA/Excel] Formule IF contenant variable dans cellule

Résolu/Fermé
AmauryL Messages postés 2 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 22 février 2013 - Modifié par AmauryL le 21/02/2013 à 18:27
pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 22 févr. 2013 à 11:00
Bonsoir,

Je suis actuellement en train d'écrire une boucle for pour créer un tableau avec un nombre d'item correspondant au précédent choix de l'utilisateur.

Sur la gauche de ce tableau, il faut nommer l'item selon une double règle : Une lettre A, B ou C selon le type d'activité, puis un nombre pour les différencier. Pour cela, je souhaite insérer une formule IF selon le choix de l'utilisateur. Cependant, je bloque, je ne comprends pas pourquoi. Est-il impossible d'utiliser des variables pour désigner les cellules quand on utilise formula ?

Voici mon code

Dim iteritem As Integer
Dim NbreItem As Integer

NbreItem = Range("K2")


'Effacement ancien tableau
Sheets("Entrée commande").Range("B8:K500").Select
With Selection
.Interior.ColorIndex = xlNone
.Font.Bold = False

End With

'Mise en place formulaire
For iteritem = 1 To NbreItem

'Mise en place des Item

'Determine si Item A B ou C
Cells(9 * iteritem + 1, 2) = "=IF(Cells(9*iteritem+1, 7)=""Fourniture"",""A"",IF(Cells(9*iteritem + 1, 7)=""Transport"",""B"",""C""))"
"


'Détermine chiffre Item
If iteritem = 1 Then
Sheets("Entrée commande").Cells(9 * iteritem - 1, 3) = 1
Else
Sheets("Entrée commande").Cells(9 * iteritem - 1, 3) = "=IF(Cells(9*iteritem -1, 3)=Cells(9*iteritem -1, 3),Cells(iteritem -1, 3)+1,1)"

End If
..
(suite de la boucle ne présentant pas d'intérêt)
..
Next

End sub


Je vous remercie de l'intérêt que vous porterez à mon message, qui me seront fort utile pour sortir de ce problème


Cordialement,

3 réponses

pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 636
Modifié par pilas31 le 22/02/2013 à 01:43
Bonsoir,

Oui c'est possible mais deux choses à corriger :
1/ il faut inserer les variables en concatenant les chaines avec &
2/ Il faut utiliser la notation "A1" pour les cellules

Voila l'exemple en gras corrigé :

AdrA1 = Cells(9 * iteritem + 1, 7).Address(False, False)  
Cells(9 * iteritem + 1, 2) = "=IF(" & AdrA1 & "=""Fourniture"",""A"",IF(" & AdrA1 & "=""Transport"",""B"",""C""))"



La variable AdrA1 est une chaine qui reçoit l'adresse de la cellule en format A1. Par exemple si iterim vaut 1 AdrA1="G10"

A+
Cordialement,
2
AmauryL Messages postés 2 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 22 février 2013
Modifié par baladur13 le 4/07/2014 à 00:06
Bonjour,

Je vous remercie pour votre aide, je n'avais pas pensé à faire cela. Y-a-t-il une raison pour laquelle il faut impérativement mettre l'adresse de cellule en format A1 ?

Dans tous les cas, votre aide me fut précieuse pilas31. Je vous remercie grandement, et vous souhaite une agréable journée.


Nom supprimé Modération CCM
0
pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 636
Modifié par pilas31 le 22/02/2013 à 11:01
Bonjour,

Je répond à la dernière question.
On peut utiliser soit le format A1 soit le format R1C1. Comme on injecte des formules dans Excel via le VBA, il faut impérativement utiliser les mêmes formats que lorsqu'on code les formules "à la main".

Donc on peut aussi choisir le format R1C1 dans ce cas il faut utiliser une syntaxe du type :
Cells(...).FormulaR1C1 = "..."
Bonne continuation
Cordialement,
0