|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Date d'inscription: novembre 2008
Messages: 181
|
Bonsoir a toutes et tous, forum bonsoir,
Voila je suis a la recherche SVP de quelques exemples de programmation en vba excel 2007 sur les if then else imbriquée je n'ai rien trouver d'exploitable ou de compréhensible pour mon faible niveau Merci a vous et de votre temps, bonne soirée bonnes vacances aux juilletistes Raymond |
|
|
|
|
|
#2 |
|
Membre Expert
![]() Date d'inscription: décembre 2002
Localisation: 38
Âge: 20
Messages: 1 162
|
salut raymond le forum regarde dans les archives du forum pas mal d'exemples
if else then tu as aussi ElseIf plusieurs conditions. aussi regarde du côte de select case eventuellement IIf autrement dit nous ce que tu veus faire!!! cela sera plus simple.
__________________
SALUTATIONS
|
|
|
|
|
|
#3 |
|
Membre actif
![]() Date d'inscription: novembre 2008
Messages: 181
|
Bonsoir Laetitia, forum
Merci pour la réponse j'ai regarder la ou tu me conseilles pour un test ca va mais apres ca se complique. je voulais rajouter des messages au code que tu m'a fait hier, j'ai chercher d'abord comment faire et j'ai modifier mais ca ne va pas comme je veux. j'apprends aussi par la meme occasion merci a toi tres bonne soirée voici un bout de code qui marche pas du feu de zeus les messages restent afficher ou s'efface trop vite Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Target Dim Lig: Lig = .Row If .Column = 5 And Cells(Lig, 1) = "" And Cells(Lig, 2) = "" And Cells(Lig, 3) = "" And _ Cells(Lig, 4) = "" Then [F28] = "Autorisé" Else [F28] = "interdit": [F28] = "" If Not Application.Intersect(Target, [H2:H27]) Is Nothing Then If .Offset(0, -1) <> "" Then [H28] = "Interdit": Sleep 1000: .Offset(0, -1).Activate _ Else [H28] = "Autorisé": [H28] = "" End If End With Dernière modification par eliot.raymond ; 01/07/2009 à 20h03. |
|
|
|
|
|
#4 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Bonjour,
Ton code me fait penser a ceux de laetitia qui sont toujours très dense. IDéale quand ton maitrise bien. Pas évident quand on débute. Essaye de l'ecrir sur plusieurs ligne, ca te permettra également d'utilisé le mode pas a pas plus facilement Pour la première boucle Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Lig as long 'c'est bien de préciser le type ca évite de n'avoir que des variant With Target Lig = .Row If .Column = 5 And Cells(Lig, 1) = "" And Cells(Lig, 2) = "" And Cells(Lig, 3) = "" And Cells(Lig, 4) = "" Then [F28] = "Autorisé" Else [F28] = "interdit" [F28] = "" 'la tu efface directement ce que tu viend d'ecrir c'est toi qui voit 'mais a mon avis ton souci viens de la ;) end if |
|
|
|
|
|
#5 |
|
Membre actif
![]() Date d'inscription: novembre 2008
Messages: 181
|
Bonjour Krovax bonjour forum
Merci beaucoup pour les conseils, j'ai essayer en faisant comme ci dessous, ca marche SAUF que "Interdit" ne s'efface pas lorsque je ne suis plus dans les conditions. Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Lig As Long With Target Lig = .Row If .Column = 5 And Cells(Lig, 1) = "" And Cells(Lig, 2) = "" And Cells(Lig, 3) = "" And _ Cells(Lig, 4) = "" Then [F28] = "Retrait autorisé" Else [F28] = "Interdit" End If End With End Sub Bonne après midi a toi et merci Raymond |
|
|
|
|
|
#6 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Oui il ne va pas s'effacer tu dit a ton programme d'écrire quelque chose dans une cellule tu ne lui dit pas de l'effacer par la suite.
Mais meme si a la fin de ta boucle tu met [F28]="" pour effacer. Le code va se dérouler si rapidement que tu n'auras absolument pas le temps de le lire. Je pense que tu devrais essayer de voir pour un évènement qui va effacer la cellule. (un bouton reset, le changement de sélection/clique sur une cellule, la modification de sélection,...) Tu pourrais mettre une temporisation pour que cela s'affiche X secondes mais c'est pas évident a mettre en place si tu veux que l'utilisateur puisse quand même avoir accès au fichier (mais c'est faisable). |
|
|
|
|
|
#7 |
|
Membre actif
![]() Date d'inscription: novembre 2008
Messages: 181
|
Re Krovax
j'ai bien compris, donc a la place d'une tempo un peu lourde pour si peu tout compte fait le code >>>>> Sleep 1000 : [F28]="" fera dans ce cas très bien l'affaire le peu que j'ai pu voir sur if then else elseif me dit que c'est possible de faire une action si les deux conditions sont fausses Te transmet ce que j'ai lu. Dans le cas ou plusieurs conditions doivent etre testées, plutot que de recourir a de nombreux if imbriquées, il est possible d'utiliser le mot cef ElseIf Code :
If condition 1 Then ' Traitement si la condition est vraie ElseIf condition 2 Then ' Traitement si la condition 1 est fausse ' mais que la condition 2 est vraie '''''' ElseIf condition n Then ' Traitement si les n-1 conditions sont fausses ' mais que la condition n est vraie Else ' Traitement si toutes les conditions sont fausses End if merci de ta patience te dit a plus tard, bonne après midi Raymond |
|
|
|
|
|
#8 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
En francais peut être
a,b,c sont trois test ou condition qui sont soit vrai soit faux Code :
Si a alors
affiche "a est vrai b et c je ne sais pas"
Sinon si b alors
affiche "a est faux et b est vrai C je ne sais pas"
sinon si c alors
ffiche "a est faux et b est faux C est vrai"
else
Affiche "Tous sont faut"
fin si
Il test a si a et vrai il entre dans la boucle affiche "a est vrai b et c je ne sais pas" et va directement au end if Si a n'est pas vrai il va au premier sinon si (else if) et fait le test ici b si b est vrai il entre dans la boucle affiche "a est faux et b est vrai C je ne sais pas" et va au fin si sans faire d'autre test Si b c'est révélé faut (et a également sinon b n'aurai pas été testé) il test c si c est vrai il affiche "a est faux et b est faux C est vrai" et quitte Enfin si c est fau (c a été testé car b est fau et b a été testé car a est faux) il affiche "Tous sont faut" et quitte la boucle Le programme en VBA si tu veux tester Code :
sub testSI() dim a as boolean, b as bollean, c as boolean a=false b=true c=true if a then msgbox "a est vrai b et c je ne sais pas" elseif b then msgbox "a est faux et b est vrai C je ne sais pas" else if c then msgbox "a est faux et b est faux C est vrai" else msgbox "Tous sont faut" end if end sub Voila j'espère que cela t'aidera a comprendre |
|
|
|
|
|
#9 |
|
Membre actif
![]() Date d'inscription: novembre 2008
Messages: 181
|
Bonsoir a tous, bonsoir Forum,
Bonsoir krovax Merci pour le code, les conseils et le site très interressant du moins pour moi je vais faire les essais du code et te dirai de quoi il retourne sans doute demain apres midi. il me faut du temps. en attendant merci encore, passe une excellente soirée. Raymond |
|
|
|
|
|
![]() |
||
[XL-2007] Doc sur if then else imbriquée
|
||
| Outils de la discussion | |
|
|