Rechercher : dans
Par :

Programmation VBA pour Excel XP

Dernière réponse le 26 nov 2007 à 05:50:46 sbel, le 8 avr 2003 à 11:14:03 
 Signaler ce message aux modérateurs

Bonjour,
Je suis en train de faire une macro en VBA pour Excel XP et un problème me bloque actuellement:
Je voudrais afficher une valeur dans une cellule qui changera suivant la valeur d'une autre cellule.Concrètement: si le chiffre d'une cellule commence par 0 ou 1 ou 5 ou 8 ou 7, cela doit afficher dans une autre cellule une valeur variable.
Par avance merci.

1

deus, le 8 avr 2003 à 14:05:39

Salut,

Je suis pas certain d'avoir compris ta question mais ce qui suit te mettra peut-être sur la piste:
"
Sub Macro1()

If Left(Cells(2, "A"), 1) = "0" Or "2" Then
Cells(4, "A") = "220"
ActiveCell.Select
End If
End Sub
"


There's no success like failure
And failure's no success at all

Répondre à deus

2

sbel, le 8 avr 2003 à 17:01:09

C'est vrai que je n'ai pas été très clair dans ma description, reprenons:
J'ai une colonne de chiffre dans un tableau que je dois traiter. Ces chiffres ne se suivent pas forcement et n'ont pas tous la même taille. Le but de la manoeuvre est d'inscrire dans une autre colonne équivalente en taille le décodage de ces chiffres. Je m'explique, si pas exemple un nombre commence par le chiffre 1, je dois marquer dans sa cellule correspondante "Jaune", si le nombre suivant commence par 7 (par exemple 7568934) je dois marquer "Voiture" dans la cellule correspondant en activant la macro.
Merci de me dire si c'est réalisable simplement.

Encore merci d'avance.
A+

Répondre à sbel

3

deus, le 8 avr 2003 à 18:27:53

Ok alors à mon avis ce qui suit devrait fonctionner :
"
Sub Macro2()
Dim i As Long
For i = 1 To 3000
If Left(Cells(i, "A"), 1) = "0" Then
Cells(i, "B") = "jaune"
ElseIf Left(Cells(i, "A"), 1) = "1" Then
Cells(i, "B") = "Rouge"
ElseIf Left(Cells(i, "A"), 1) = "2" Then
Cells(i, "B") = "vert"
End If

Next i

End Sub
"

i étant le nombre de lignes
A la colonne qui contient les chiffres
B la colonne qui contient les résultats

ciao


There's no success like failure
And failure's no success at all

Répondre à deus

4

WhiteFang, le 9 avr 2003 à 12:47:54

;-)

Une autre approche :

sub Toto()
dim L
for L=1 to sctivecell.specialcells(xllastcell).row
select case left(cells(L, 1).value,1)
case=0:cells(L,numcolonne).value="toto"
case=x....
end select
next

;-)


Wild and Free

Répondre à WhiteFang

5

WhiteFang, le 9 avr 2003 à 12:50:21

=> ACTIVECELL.SPECIALCELLS(XLCELLTYPELASTCELL).ROW !!

Pardon, mes doigts on encore chourfés !!

Wild and Free

Répondre à WhiteFang

6

deus, le 9 avr 2003 à 14:23:30

Salut WhiteFang

Bien vu, l'approche "Case" est probablement plus appropriée.
CU


There's no success like failure
And failure's no success at all

Répondre à deus

7

WhiteFang, le 9 avr 2003 à 20:08:15

;-)

Wild and Free

Répondre à WhiteFang

8

sbel, le 11 jun 2003 à 12:56:00

Salut deus, merci pour le coup de pouce (qu date d'un bout de temps je sais, désolé). Et en plus avec l'aide également de WhiteFang vos méthodes m'ont permis de réussir ce que je voulais faire, cool.
Mais l'heure est grave, j'ai un autre problème:
Je suis en train de faire une autre macro qui doit inscrire dans une cellule une valeur "S" ou"NS" ou "P" ou "Z" suivant la valeur du chiffre d'une autre cellule. Mon problème n'est la mise en forme car le as est proche de la question précédente mais mon souci est pour donner une fourchette de valeur. Par exemple, je veux que, si la valeur du nombre est comprise entre 100 et 500, on inscrive "P" dans l'autre cellule.
Comment ça marche?
Par avance merci
A+

Répondre à sbel

9

boumbo, le 18 jun 2003 à 12:01:51
  • +1

Salut sbel

si j'ai bien compris ce que tu cherches à faire, voici un proposition qui reprend plus ou moins ton exemple ...


Sub Macro()


'la colonne A contient des valeurs numériques à tester à partir de la ligne 1
'la colonne B affiche une valeur en fonction de la colonne A
'x = nombre de lignes à vérifier

For ligne = 1 To x

ActiveSheet.Cells(ligne, "A").Activate
' séléction de la cellule

If ((ActiveCell.Value >= 100) And (ActiveCell.Value <= 500)) Then

ActiveSheet.Cells(ligne, "B").Activate
ActiveCell.Value = "P"

Else

If ((ActiveCell.Value >= 501) And (ActiveCell.Value <= 600)) Then

ActiveSheet.Cells(ligne, "B").Activate
ActiveCell.Value = "S"

End If

End If


Next ligne

End Sub


Pour les autres, tu continues les "If" imbriqués en spécifiant les conditions que tu veux et la valeur à afficher dans l'autre colonne

Répondre à boumbo

10

dork_maule, le 15 jui 2004 à 14:40:28

Salut tout le monde.
Y a t-il un pro de chez pro en ce qui concerne EXCEL?
J'ai plusieur cellule texte qui comprenne des texte différent a chaque cellule comme "MASTER\TDPTDT (Tomasi, Denis) (inform)" ou "MASTER\T05214 (Thielemans, Stéphanie)" mais dans c'est ligne il y a "MASTER\T21001" et des "MASTER\T21003".
Ce que je veux faire c'est faire une recherche en comptant combient il y a de T21 tout en utilisant un forme abrégée"MASTER\T21" pour qu'il prenne en compte T21003 et les T21001

Répondre à dork_maule

11

André Lévis, le 23 aoû 2004 à 18:07:56

Boujour, voilà j'ai un problème insurmontable présentement avec mon application. J'ai une feuille de calcul qui ne se nomme "statistique" qui est composé de 35 lignes pour une liste d'équipements de n10 à n35 ils sont en string. Je dois les incrémenter en relation avec des centres qui compose 4 colonnes en O,P,Q,R. Je veux faire lire une ligne contenant les deux données dans une autre feuille "stact" en "C8" pour les centres et "L8" pour les équipements. Ces données se retrouveront constamment par une macro dans la feuille 'stact" et ils se retrouvent toujours aux mêmes cellules "C8" et "L8" Comment rédiger une procédure qui pourrait lui faire lire ces données pour les incémenter dans "statistiques" par + 1.

Merci à l'avance...André

Répondre à André Lévis

12

 randrianarisata, le 26 nov 2007 à 05:50:46

Slt tout le monde.
Pouvez vous m'aider comment faire éxporter un Etats dans Access vers Excell automatiquement mise à jour par une bouton de commande

Répondre à randrianarisata