Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 01/07/2009, 18h44   #1
Membre actif
 
Date d'inscription: novembre 2008
Messages: 181
Par défaut Doc sur if then else imbriquée

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
eliot.raymond est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 19h25   #2
Membre Expert
 
Avatar de laetitia
 
Date d'inscription: décembre 2002
Localisation: 38
Âge: 20
Messages: 1 162
Par défaut

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
laetitia est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 19h48   #3
Membre actif
 
Date d'inscription: novembre 2008
Messages: 181
Par défaut

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
Raymond

Dernière modification par eliot.raymond ; 01/07/2009 à 20h03.
eliot.raymond est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 11h32   #4
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
 
Tu as l'équivalent dans la deuxième boucle
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 14h12   #5
Membre actif
 
Date d'inscription: novembre 2008
Messages: 181
Par défaut

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
eliot.raymond est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 14h20   #6
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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).
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 15h10   #7
Membre actif
 
Date d'inscription: novembre 2008
Messages: 181
Par défaut

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
J'ai recopier correctement il ni a pas d'erreur, voila ce que je trouve pas très clair du moins pour moi un exemple serai bien plus parlant et je ne trouve pas

merci de ta patience te dit a plus tard, bonne après midi

Raymond
eliot.raymond est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 17h09   #8
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
Ce que fai le programme
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
Pour plus d'info regarde ce site (j'ai déjà du te le conseiller ) ce n'est pas du VBA mais du pseudo code l'objectif et d'apprendre a ce servir des boucle des test et des principe de programmation sans avoir a connaitre un code. C'est la théorie

Voila j'espère que cela t'aidera a comprendre
Krovax est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 18h25   #9
Membre actif
 
Date d'inscription: novembre 2008
Messages: 181
Par défaut

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
eliot.raymond est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 02h32.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.