Aide pour If Then à un débutant

Résolu
lolobny Messages postés 5 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 5 mars 2009 - 4 mars 2009 à 13:10
lolobny Messages postés 5 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 5 mars 2009 - 5 mars 2009 à 11:37
Bonjour à tous
puisqu'il n'y a pas de questions idiotes, je vais poser la mienne plutôt que de rester dans l'ignorance, pourtant j'ai pas mal cherché (je vous jure)

voilà c'est tout simple

sous excel
je saisis une valeur dans la colonne C ,
alors sur la même ligne mais en colonne F, une action se produit (écriture d'une valeur, mise en forme, etc)

je ne veux pas utiliser la mise en forme conditionnelle d'excel car j'ai plusieurs actions à faire en simultanée.

le principe de macro en VBA me permettrait d'adapter cette solution à d'autres fichiers sur lesquels je travaille

j'ai utilisé l'instruction For Each et cela marche mais je voudrais trouver une solution avec l'instruction If Then Else

merci de faire progresser ma compréhension

8 réponses

lolobny Messages postés 5 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 5 mars 2009
5 mars 2009 à 11:37
Bonjour et merci aux deux auteurs des réponses
                    de nouvelles perspectives de travail pour nous car ce savoir sera partagé avec mes collègues de travail (nous ne sommes pas programmeurs mais on veut faire avancer les choses)

réponse 1 :     j'ai appliqué et adapté à ma situation la formule  proposée
                      cela fonctionne

réponse 2 :     je vais la tester car sa mise en forme m'intéresse étant d'une approche différente

Bonne journée à tous
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 mars 2009 à 13:49
Salut
Si ton Each fonctionne, colle-le ici, car ton descriptif est un peu vague

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
xavfra Messages postés 2 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 5 mars 2009
4 mars 2009 à 15:30
Slt, c'est vrai que serait pas mal de savoir ce que tu veux faire avec le IF.
Pour le if, il y a plusieurs moyens de le faire.

Dans l'essentiel, tu peux faire :
IF condition THEN
   En fonction de ta condition et de la manière dont tu la souhaites, tu initilises le reste de tes actions.
Ex : if Cellule C <> "" then
   La je teste que ta cellule C ne soit pas vide pour éviter de faire tourner le reste des actions.
   Ensuite, tu codes ce qui correspond dans ta colonne J.
   ELSE
   Représente le cas où ta colonne est vide donc tu mettre un message, un texte, ...
   END IF

Xav
0
lolobny Messages postés 5 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 5 mars 2009
4 mars 2009 à 15:47
voici ce que j'avais fait

Sub essai()

dim statut, registre
statut = Range("C5")
registre = Range("F5")

    If statut = "x" Then
    registre = "non"

End Sub
-----------------------------
Sub essai()
Dim statut

For Each statut in Range("C2:C500")
       If statut = "x" Then
          statut.Interior.colorindex = 48
       End If
Next statut

End Sub
-------------------------------------
bon c pas grand chose mais pour moi c'est une entrée en matière pour comprendre ces instructions
je bloque pour les mélanger

mon but :
est il possible de faire référence à la colonne C entière dans la première instruction
comment faire pour que le Then s'applique à autre colonne (saisie en C3 et action en F3)

Merci
0

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

Posez votre question
lolobny Messages postés 5 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 5 mars 2009
4 mars 2009 à 16:05
voici ce que j'avais fait

Sub essai()

dim statut, registre
statut = Range("C5")
registre = Range("F5")

    If statut = "x" Then
    registre = "non"

End Sub
-----------------------------
Sub essai()
Dim statut

For Each statut in Range("C2:C500")
       If statut = "x" Then
          statut.Interior.colorindex = 48
       End If
Next statut

End Sub
-------------------------------------
bon c pas grand chose mais pour moi c'est une entrée en matière pour comprendre ces instructions
je bloque pour les mélanger

mon but :
est il possible de faire référence à la colonne C entière dans la première instruction
comment faire pour que le Then s'applique à autre colonne (saisie en C3 et action en F3)

Merci
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
4 mars 2009 à 17:21
Salut,

pas sur d'avoir compris ton besoin mais bon je vais essayer:

Sub essai()
    Dim Maplage As Range, MaCellule As Range
    Set Maplage = Range("C2:C500")
    ' pour chaque cellule de ma plage
    For Each cellule In Maplage
        ' si la valeur de la cellule = x alors
        If cellule.Value = "x" Then
            ' on travail sur la meme ligne que cette cellule mais en colonne f
            With Range("F" & cellule.Row)
                .Value = "non" ' on lui attribu une valeur
                .Interior.ColorIndex = 48 ' on lui attribu une couleur de fond
            End With
        End If
    Next
End Sub
0
lolobny Messages postés 5 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 5 mars 2009
4 mars 2009 à 18:59
Je vais essayer cela

Merci de ton aide bigfish le vrai
[auteur/BIGFISHLEVRAI/510670.aspx
]
0
xavfra Messages postés 2 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 5 mars 2009
5 mars 2009 à 11:16
Salut lolobny,

Tu peux aussi voir cela :

Sub essai

' Insertion de variable pour recherche dans cellule
refcel=2
refcol=3

while cells(refcel,refcol)<>"" 'on suppose que dans ta colonne C, les valeurs commence à la ligne 2
                                             ' Dès que vide, on sort de la boucle
   if cells(refcel, refcol)="x" then                     ' si ta cellule contient x
      cells(refcel,refcol+2)="ok"                        ' alors la même ligne dans ta colonne F aura "ok"
      cells(refcel,refcol).interior.colorindex=48   ' Colorisation de la colonne trouvé.
   else
      cells(refcel,refcol).interior.color=vbred   ' x pas présent dasn ta colonne C
   end if
   refcel=refcel+1                                          ' Pour que la boucle WHILE se fasse sur les cellules de ta colonne C
wend

end sub

Vla; Bon amusement.
0
Rejoignez-nous