[VBA/Excel] Formule IF contenant variable dans cellule
Résolu
AmauryL
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
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,
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,
A voir également:
- [VBA/Excel] Formule IF contenant variable dans cellule
- Formule si et excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
3 réponses
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é :
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,
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,
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
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
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,
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,