[Débutant macro excel] If then...plusieurs conditions.

ow031

XLDnaute Nouveau
Bonjour à tous,

Je découvre tout juste excel et ses macros et là je bloque. J'ai beau parcourir le forum et le net je ne trouve pas la bonne formule :(.

Explication :

Depuis un tableau je veux recuperer plusieurs infos pour les imprimer sur un modèle donné. Mais il y a plusieurs conditions à respecter pour cette impression.

Le nombre de ligne du tableau est noté dans une cellule :
For i = 1 To NBLIGN

J'attribue les valeurs à extraire :
pipo = Range("M" & 9 + i).Value
blabla = Range("N" & 9 + i).Value
Toto = Range("" & 9 + i).Value
...

Le souci c'est:
si "pipo" > 500 alors
'Deux fois la même chose à imprimer'
(fais ça : ...
et que si "blabla" <> 0
fais ça en plus, sinon oublie "blabla". imprime). Deux fois

Maintenant si pipo est <500
fais ça : ...
et que si "blabla" <> 0
fais ça en plus, sinon oublie "blabla". imprime 1 fois.

Et donc si pipo = 0 passe à la ligne suivante (next i).


Si quelqu'un peut m'expliquer le schéma à suivre parce que là je pédale dur.
MERCI.
 

d.ryba

XLDnaute Junior
Re : [Débutant macro excel] If then...plusieurs conditions.

Salut,
Bon j'ai fait ça vite fait, alors un peu d'indulgence ^^

Code:
Sub PipoEtBlablSontDansUnBateau()

pipo = "0"
blabla = "0"

    If pipo = "0" Then 'pipo = 0
        MsgBox ("Pipo = 0") 'a remplacer par Next i
    Else
        If pipo > "500" Then 'pipo > 500
             MsgBox ("Pipo > 500")
                If blabla <> "0" Then 'Pipo > 500 et blabla <> 0
                    MsgBox ("Pipo > 500 et blabla <> 0")
                End If
        Else 'donc si pipo > 0 et =< 500
            MsgBox ("Pipo =< 500")
                If blabla <> "0" Then 'pipo > 0 et =< 500 et blabla <> 0
                    MsgBox ("Pipo =< 500 et blabla <> 0")
                End If
        End If
    End If

End Sub

Les "msgbox" sont à remplacer par tes actions rien du tout.
J'ai mit "Pipo" et "Blabla" en haut de la macro pour les test, car je n'ai pas de fichier avec les données .
Ce code peu être intégré dans une boucle sans problème.

A une dernière question : on en fait quoi de "Toto = Range("" & 9 + i).Value" ?
 
Dernière édition:

ow031

XLDnaute Nouveau
Re : [Débutant macro excel] If then...plusieurs conditions.

Merci beaucoup je jette un oeil à ça.

Pour toto c'est une feinte :p . Non c'est parce que ma macro d'origine à quelque chose comme une douzaine de valeurs, j'avais prévu mon exemple avec 3 mais en fait deux ça suffisait.

Sinon les apostrophes pipo ( 'pipo) ou 'a ça signifie quoi clairement ?
 

d.ryba

XLDnaute Junior
Re : [Débutant macro excel] If then...plusieurs conditions.

Merci beaucoup je jette un oeil à ça.

Pour toto c'est une feinte :p . Non c'est parce que ma macro d'origine à quelque chose comme une douzaine de valeurs, j'avais prévu mon exemple avec 3 mais en fait deux ça suffisait.

Sinon les apostrophes pipo ( 'pipo) ou 'a ça signifie quoi clairement ?

c'est des commentaires, ça sert à rien à part mettre des anotations dans tes programmes.
 

ow031

XLDnaute Nouveau
Re : [Débutant macro excel] If then...plusieurs conditions.

Bon je remets tout ça cette aprèm dans ma macro et je teste.

Je me suis bien embrouillé en fouillant sur le net avec les If, IIf, else, elseif...et j'ai toujours pas tout compris.

Sinon utiliser une seconde boucle dans la première boucle afin d'imprimer deux fois la même chose selon un critère ça ne pose pas de problème ?

Genre:

nblign=Range("H1").Value
For i = 1 To NBLIGN
If x>450 then
pipo = 2
for j = 1 to pipo
"blabla"
next j
next i


Merci encore beaucoup.
 

ow031

XLDnaute Nouveau
Re : [Débutant macro excel] If then...plusieurs conditions.

Bon j'ai réussi à me débrouiller. Et ça fonctionne.

Par contre le next i j'ai du le mettre à la fin. Je ne pouvais pas attribuer 2 next pour un for.

Ça donne:
Code:
Sub Besoincoco()
'
' Besoincoco Macro
' Macro enregistrée le 17/06/2009 par MC
'
    'selection de la feuille de saisie
Sheets("saisie").Select
Sheets("saisie").Unprotect
    'Récuperer le nb d'articles
NBLIGN = Range("H1").Value / 2
    
    'début boucle
  For i = 1 To NBLIGN
            'récupération des valeurs de la fiche
                toto = Range("M" & 8 + i * 2).Value
                tata = Range("N" & 8 + i * 2).Value
                toto2 = Range("O" & 8 + i * 2).Value
                tata2 = Range("P" & 8 + i * 2).Value
                psaum = Range("L" & 8 + i * 2).Value
                NomProd = Range("B" & 8 + i * 2).Value
                NUMLOT = Range("F" & 8 + i * 2).Value
                Date = Range("G3").Value
                kirry = Range("Y" & 8 + i * 2).Value
                susp = Range("K" & 8 + i * 2).Value

            If susp > 485 Then

                    
                            
                            nbdepatch = 2
                            For P = 1 To nbdepatch
            
                    
                                        Sheets("Formules coco").Select
                                        Range("A1").Select
                                        Selection.Value = Date
                                        Range("A5").Select
                                        Selection.Value = NomProd
                                        Range("A9").Select
                                        Selection.Value = NUMLOT
                                        Range("D15").Select
                                        Selection.Value = (toto + tata) / 2 & " Kg"
                                        Range("D19").Select
                                        Selection.Value = (toto2 + tata2) / 2 & " Kg"
                                        Range("D23").Select
                                        Selection.Value = psaum / 2 & " Kg"
            
                                          If kirry <> 0 Then
                                          Range("C27").Select
                                          ActiveCell.FormulaR1C1 = "kirry :"
                                          Range("D27").Select
                                          Selection.Value = kirry / 2 & " Kg"
                                          End If
            
                                        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
                                        Next P
                    
                                                    
             ElseIf susp > 0 Then
             
                                        Sheets("Formules coco").Select
                                        Range("A1").Select
                                        Selection.Value = Date
                                        Range("A5").Select
                                        Selection.Value = NomProd
                                        Range("A9").Select
                                        Selection.Value = NUMLOT
                                        Range("D15").Select
                                        Selection.Value = (toto + tata) & " Kg"
                                        Range("D19").Select
                                        Selection.Value = (toto2 + tata2) & " Kg"
                                        Range("D23").Select
                                        Selection.Value = psaum & " Kg"
            
                                          If kirry <> 0 Then
                                          Range("C27").Select
                                          ActiveCell.FormulaR1C1 = "kirry :"
                                          Range("D27").Select
                                          Selection.Value = kirry & " Kg"
                                          End If
                    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
            'Efface les anciennes donneées
            Sheets("Formules coco").Select
            Range("D26:E28,A1:G3,A5:G7,A9:G11,D14:E16,D18:E20,D22:E24,D26:E28,B26:C28").Select
            Selection.ClearContents
            
            Sheets("saisie").Select
            Next i
            
            
       
 

    Sheets("saisie").Protect
    Sheets("ACCES DIRECT").Select

End Sub

Je comprends pas trop le elseIf mais ça tourne ;)
 

Discussions similaires

Réponses
2
Affichages
294

Statistiques des forums

Discussions
312 451
Messages
2 088 527
Membres
103 879
dernier inscrit
JJB2