Programmation VBA pour Excel XP

Fermé
sbel Messages postés 2 Date d'inscription jeudi 19 juillet 2001 Statut Membre Dernière intervention 11 juin 2003 - 8 avril 2003 à 11:14
randrianarisata Messages postés 2 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 26 nov. 2007 à 05:50
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.
A voir également:

6 réponses

deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 91
8 avril 2003 à 14:05
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
1
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+
0
deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 91
8 avril 2003 à 18:27
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
0
WhiteFang Messages postés 2056 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 15 février 2008 204
9 avril 2003 à 12:47
;-)

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
0
WhiteFang Messages postés 2056 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 15 février 2008 204
9 avril 2003 à 12:50
=> ACTIVECELL.SPECIALCELLS(XLCELLTYPELASTCELL).ROW !!

Pardon, mes doigts on encore chourfés !!

Wild and Free
0
deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 91
9 avril 2003 à 14:23
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
0
WhiteFang Messages postés 2056 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 15 février 2008 204 > deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007
9 avril 2003 à 20:08
;-)

Wild and Free
0
sbel Messages postés 2 Date d'inscription jeudi 19 juillet 2001 Statut Membre Dernière intervention 11 juin 2003 > deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007
11 juin 2003 à 12:56
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+
0
boumbo > sbel Messages postés 2 Date d'inscription jeudi 19 juillet 2001 Statut Membre Dernière intervention 11 juin 2003
18 juin 2003 à 12:01
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
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
André Lévis
23 août 2004 à 18:07
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é
0
randrianarisata Messages postés 2 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
26 nov. 2007 à 05:50
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
0