avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
27 sept. 2007 à 00:23
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
28 sept. 2007 à 02:53
Bonjour à tous,
Je voudrais savoir comment je pourrais faire pour que si par exemple dans <st1:personname productid="la colonne C" w:st="on">la colonne C</st1:personname> de ma feuille excel, la valeur est
entre 1001 et 1100, que dans <st1:personname productid="la colonne D" w:st="on">la
colonne D</st1:personname> de la même ligne, il me marque Fruits, et que si la
valeur de <st1:personname productid="la colonne C" w:st="on">la colonne C</st1:personname>
est entre 2001 et 2100, que dans <st1:personname productid="la colonne D" w:st="on">la colonne D de la même ligne</st1:personname>, il me marque Viandes, etc.
Je dirais que j'ai environ 6 sortes de valeur différentes, mais sur le même
principe.
Les données partent de <st1:personname productid="la cellule C" w:st="on">la cellule
C</st1:personname>5 en descendant, jamais pareille, mais il part toujours de
C5.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 27 sept. 2007 à 12:15
Sinon, pour ton erreur, c'est normal :
cell(C.Value, 4).Value = "viandes"
La bonne syntaxte, c'est Cells ... et C.value, ce n'est pas un numéro de ligne, mais le contenu de ta cellule, soit 1001, 2100, etc ...
Voici comment je ferai en VBA :
Dim c As Range
For Each c In ActiveSheet.Range("B6:C13")
Select Case c.Value
Case 2001 To 2100
Cells(c.Row, 4).Value = "Viandes"
Case 1001 To 1100
Cells(c.Row, 4).Value = "Fruits"
Case Else
Cells(c.Row, 4).Value = ""
End Select
Next c
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 27 sept. 2007 à 10:24
salut avec un :
for each C in activesheet.range ("C1:C999")
if C.value >= 2001 and C.value <=2100 then
cell(c.value,4).value = "viandes"
end if
if C.value >= 1001 and C.value <=1100 then
cell(c.value,4).value = "fruits"
end if
etc.....
Tiens les balises ne sont pas reconnues ^_____^, zut alors.....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 sept. 2007 à 11:28
Comme tu n'as que 6 possibilités, tu peux écrire une formule directement en D avec plusieurs SI. Soit tu passes par VBA pour l'écrire, soit tu l'écris directement ...
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 27 sept. 2007 à 11:51
Merci pour vos réponses,
Dans ce code:
For Each C In ActiveSheet.Range("C1:C999")
If C.Value >= 2001 And C.Value <= 2100 Then
cell(C.Value, 4).Value = "viandes"
Next C
End If
If C.Value >= 1001 And C.Value <= 1100 Then
cell(C.Value, 4).Value = "fruits"
Next C
End If
Il me met un erreur à : cell (C.Value, 4).Value = "viandes"
et je comprend pas pourquoi.
PS: MPI, je dois passer par VBA en ne mettant pas de formule dans les cellules de la colonne D pour éviter d'allourdidire le fichier.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 27 sept. 2007 à 12:01
On peut même le faire quasiment comme un Select Case en formule Excel : une seule formule et une table de correspondance.
Je m'explique, dans une feuille quelconque, tu crées ta table de correspondance de la façon suivante :
A1: 0 B1: Vide
A2: 1001 B2: Fruit
A3 : 1100 B3: Fruit
A4: 1101 B4: Vide
A5: 2001 B5: Viande
A6: 2100 B6: Viande
A7: 2101 B7: Vide
etc ...
Tu comprends le principe ? Tu marques dans ta table les deux bornes de chaque champ.
Tu nommes cette zone de nom : Menu Insertion\Nom\Définir : "Liste" par exemple
Ensuite, dans ta feuille, dans ta colonne D, tu vas mettre, pour la ligne 5 :
D5: = RECHERCHEV(C5;Liste;2;VRAI)
Plus qu'à copier cette formule sur toutes les lignes.
Avantage : Rien à changer, pas de code VBA à modifier quand tu veux rajouter une catégorie, juste deux lignes à insérer dans ta zone de nom (si tu ajoutes à la fin, penser à redéfinir la zone de nom). facile à maintenir, n'importe qui connaissant Excel peut le faire, pas besoin de connaitre le VBA. Mise à jour en temps réel, si tu modifies un paramètre, pas besoin de relancer une macro.
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 27 sept. 2007 à 12:39
Bienvu molenn et autant pour moi ^^ j'étais pas sur mon poste et du coup j'ai fait cela de tête XD (mode boulet=on )
C'est vrai que le case et plus sympa que mon if ;)
pour finir je préfére de loin la version VBA car elle évite les surprises de modif de cellule par une tiers personne (obligé d'écrire la formule en ligne1 et de "dérouler" à chaque ouverture du workbook)
Tiens les balises ne sont pas reconnues ^_____^, zut alors.....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 sept. 2007 à 02:53
Salut Avyrex,
Comme je le dis souvent (mais pas dans ces mots...), il est simple d'écrire une formule dans une colonne avec une ligne de code, et il est aussi simple de faire un copier/coller en valeur par la suite...