Macro excel

Fermé
michael - 26 janv. 2013 à 22:30
 michael - 27 janv. 2013 à 18:06
Bonjour,

je souhaiterais faire une macro simple dans excel, mais je ne maitrise pas la syntaxe à employer, quelqu'un peut-il me faire cette syntaxe ?

Si la cellule A1 > cellule A2, alors cellule B1 = 1 et cellule B2 = 0
Si la cellule A1 < cellule A2, alors cellule B1 = 0 et cellule B2 = 1

Merci d'avance

A voir également:

7 réponses

eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
26 janv. 2013 à 22:51
sub test()

if [a1]>[a2] then
[b1]=1
[b2]=0
end if

end sub

tu devrai te débrouiller pour ta deuxième conditions ;)

cordialement,
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
Modifié par eljojo_e le 26/01/2013 à 23:05
Après si tu veux aller plus loin dans la compréhension du code, tu as :


Range("B1").value = 1 ' défini la valeur (d'où le .value) de B1 

Range("B1").select 'sélectionne la cellule B1, tu peux écrire aussi : 

 Range("B1").select = 1 'sélectionne la cellule B1 et lui assigne la valeur 1 

[b1] = 1 'fonctionne tout aussi bien que Range("B1").value = 1, et est plus simple à rédiger lol 

0
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 735
26 janv. 2013 à 22:53
Bonsoir,

Pourquoi une macro ?
Des formules dans les cellules suffisent

formule à mettre en B1 =SI(A1>A2;1;0)
formule à mettre en B2 =SI(B1=1;0;1)

Est ce bon ?
0
ta syntaxe a bien fonctionnée, maintenant je souhaite faire:

comparer la cellule A2 aux cellules A1 et A3 pour avoir A4=0 ou 1

dans la cellule A4, j'ai ecris:

=SI(A1<A2<A3;1;0)

ca ne marche pas
0
c'est bon j'ai trouve, c'est:
=SI(ET......
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
26 janv. 2013 à 22:59
Bonjour,
La syntaxe pour :
Si la cellule A1 > cellule A2, alors cellule B1 = 1 et cellule B2 = 0
If Range("A1") > Range("A2") Then
    Range("B1") = 1
Else
    Range("B2") = 0
End If


Si la cellule A1 < cellule A2, alors cellule B1 = 0 et cellule B2 = 1
If Range("A1") < Range("A2") Then
    Range("B1") = 0
Else
    Range("B2") = 1
End If

0
Merci de ces reponses aussi rapide, je ne connaissais pas la version simple directement dans excel, puis j'aimerai apprendre a maitriser cette syntaxe pour faire des fonctions plus complexes par la suite, d'ou le fait de commencer par de simples.

je vais maintenant le rediger.
0

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

Posez votre question
Hé les gars, voici la syntaxe que j'ai écris:

If Range("G25") > Range("G27") Then
Range("I25") = 1

Else: Range("I25") = 0

End If

cependant, lorsque j'execute la maccro, il me surligne en jaune la 1ère ligne, pourquoi ?
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
Modifié par eljojo_e le 26/01/2013 à 23:41
Toujours commencer son code par :
Sub NomDeTonCode()    

et finir ton code par :
End sub    


ps : tes ":" après else ne servent à rien il faut sauter une ligne



sub test() 

If Range("G25") > Range("G27") Then  

Range("I25") = 1  

Else 

Range("I25") = 0  

End If  

end sub 
0
j'avais mis sub test et end sub, fallait que je saute les lignes, ca fonctionne merci.
0
bon en fait ca fonctionne toujours pas, en fait quand je retourne sur excel, j'ai un chiffre 0 qui s'affiche dans la case I25, mais le chiffre 1 n'apparait pas quand je respecte la condition, pourtant j'ai fait execution>reinitialiser puis execution>executer
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
Modifié par eljojo_e le 26/01/2013 à 23:55
Ba écoute chez moi ça fonctionne à merveille lol. essaye de mettre .value à la fin :

sub test()  

If Range("G25").value > Range("G27").value Then   

Range("I25").Value = 1   

Else  

Range("I25").value = 0   

End If   

end sub 


tu copie-colle ce code
0
alors oui en fait ca marche bien maintenant,lorsque je lance l'execution et que je retourne sur excel j'ai bien la bonne valeur, mais si je change les valeurs des cellules dans excel, ca ne me change pas le resultat dans la case i, je suis obligé de retourner dans la macro et d'executer la macro, je pensais que le resultat changerait a chaque fois que je changeais les valeurs dans excel
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
26 janv. 2013 à 23:39
Bonjour,
Et comme cela :
Sub test_si ()
If Range("G25") > Range("G27") Then
   Range("I25") = 1
Else 
   Range("I25") = 0
End If
End Sub

0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
27 janv. 2013 à 14:04
Bonjour michael,
Vous pouvez utiliser une procédure qui se déclenche sur un événement de la feuille, vous copiez et collez la procédure suivante dans le module de la feuille concernée :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("G25:G27")) Is Nothing Then
    If Range("G25") > Range("G27") Then
       Range("I25") = 1
    Else
       Range("I25") = 0
    End If
End If
End Sub


0
Merci du renseignement.
0