OVH Cloud OVH Cloud

Test sur une plage

9 réponses
Avatar
Maximus
Bonjour

Voici ce que je voudrai faire en vba sous excel

Dans une plage allant de b6 à b11

si b6 vide, activation b6 et fin procédure
si b6 non vide et c6 vide, activation c6 et fin procédure
si b6 non vide et c6 non vide et d6 non égale à 2X, activation b7 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X, activation e6 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide , activation
f6 et fin procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide et f6 non
vide, activation b7 et fin procédure


j'ai commencé quelle truc avec des if , et des do until isempty mais je m'en
sors pas...

Toute aide serai la bienvenue..

D'avance merci

@+ Max

9 réponses

Avatar
Daniel
Bonjour.
J'ai pas testé, mais c'est l'idée :

Sub test1()
Dim c As Range
For Each c In Range("B6:B11")
If c.Value = "" Then c.Activate: Exit Sub
If c.Offset(0, 1).Value = "" Then c.Offset(0, 1).Activate: Exit Sub
If c.Offset(0, 2).Value <> "2X" Then c.Offset(1, 1).Activate: Exit
Sub
If c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value <> "" Then
c.Offset(0, 1).Activate: Exit Sub
End If
If c.Offset(0, 3).Value <> "" Then
c.Offset(0, 4).Activate: Exit Sub
End If
c.Offset(0, 3).Activate: Exit Sub
Next c
End Sub

Cordialement.
Daniel
"Maximus" a écrit dans le message de news:
eps921$pb8$
Bonjour

Voici ce que je voudrai faire en vba sous excel

Dans une plage allant de b6 à b11

si b6 vide, activation b6 et fin procédure
si b6 non vide et c6 vide, activation c6 et fin procédure
si b6 non vide et c6 non vide et d6 non égale à 2X, activation b7 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X, activation e6 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide , activation
f6 et fin procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide et f6 non
vide, activation b7 et fin procédure


j'ai commencé quelle truc avec des if , et des do until isempty mais je
m'en sors pas...

Toute aide serai la bienvenue..

D'avance merci

@+ Max



Avatar
Jacky
Bonjour,
2x = 2*X ??
'----------
Sub jj()
x = 10
If [b6] = "" Then [b6].Select
If [b6] <> "" And [c6] = "" Then [c6].Select
If [b6] <> "" And [c6] <> "" And [d6] <> 2 * x Then [b7].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x Then [e6].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x And [e6] <> "" Then
[f6].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x And [e6] <> "" And [f6] <> ""
Then [b7].Select
End Sub
'-----------
--
Salutations
JJ


"Maximus" a écrit dans le message de news:
eps921$pb8$
Bonjour

Voici ce que je voudrai faire en vba sous excel

Dans une plage allant de b6 à b11

si b6 vide, activation b6 et fin procédure
si b6 non vide et c6 vide, activation c6 et fin procédure
si b6 non vide et c6 non vide et d6 non égale à 2X, activation b7 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X, activation e6 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide , activation
f6 et fin procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide et f6 non
vide, activation b7 et fin procédure


j'ai commencé quelle truc avec des if , et des do until isempty mais je
m'en sors pas...

Toute aide serai la bienvenue..

D'avance merci

@+ Max



Avatar
Maximus
Merci de votre réponse

2X est un texte donc je suppose mettre "2X"

Comment faire pour que cela boucle ?? (ici vous me donnez un exemple avec la
ligne 6, mais j'aimerais faire le test dans une plage allant de b6 à b11)

Encore merci

@+ Max
"Jacky" a écrit dans le message de news:
%
Bonjour,
2x = 2*X ??
'----------
Sub jj()
x = 10
If [b6] = "" Then [b6].Select
If [b6] <> "" And [c6] = "" Then [c6].Select
If [b6] <> "" And [c6] <> "" And [d6] <> 2 * x Then [b7].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x Then [e6].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x And [e6] <> "" Then
[f6].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x And [e6] <> "" And [f6] <>
"" Then [b7].Select
End Sub
'-----------
--
Salutations
JJ


"Maximus" a écrit dans le message de news:
eps921$pb8$
Bonjour

Voici ce que je voudrai faire en vba sous excel

Dans une plage allant de b6 à b11

si b6 vide, activation b6 et fin procédure
si b6 non vide et c6 vide, activation c6 et fin procédure
si b6 non vide et c6 non vide et d6 non égale à 2X, activation b7 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X, activation e6 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide ,
activation f6 et fin procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide et f6 non
vide, activation b7 et fin procédure


j'ai commencé quelle truc avec des if , et des do until isempty mais je
m'en sors pas...

Toute aide serai la bienvenue..

D'avance merci

@+ Max







Avatar
Maximus
Merci de votre réponse

Cela fonctionne pour b6, par contre si b6 et c6 sont rempli et d6 <> "2X" on
ne passe pas à b7, une idée du pourquoi ??

Encore merci

@+Max

"Daniel" a écrit dans le message de news:
%
Bonjour.
J'ai pas testé, mais c'est l'idée :

Sub test1()
Dim c As Range
For Each c In Range("B6:B11")
If c.Value = "" Then c.Activate: Exit Sub
If c.Offset(0, 1).Value = "" Then c.Offset(0, 1).Activate: Exit Sub
If c.Offset(0, 2).Value <> "2X" Then c.Offset(1, 1).Activate: Exit
Sub
If c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value <> "" Then
c.Offset(0, 1).Activate: Exit Sub
End If
If c.Offset(0, 3).Value <> "" Then
c.Offset(0, 4).Activate: Exit Sub
End If
c.Offset(0, 3).Activate: Exit Sub
Next c
End Sub

Cordialement.
Daniel


Avatar
Jacky
Re...
Essaie ceci:
'---------
Sub jj()
For Each c In Range("B6:f11")
If Range("d" & c.Row) <> "2x" Then Range("d" & c.Row).Select: Exit Sub
If c = "" Then
Range(c.Address).Select: Exit Sub
Else
Range("b" & c.Row + 1).Select
End If
Next
End Sub
'-------------

--
Salutations
JJ


"Maximus" a écrit dans le message de news:
epsghc$103$
Merci de votre réponse

2X est un texte donc je suppose mettre "2X"

Comment faire pour que cela boucle ?? (ici vous me donnez un exemple avec
la ligne 6, mais j'aimerais faire le test dans une plage allant de b6 à
b11)

Encore merci

@+ Max
"Jacky" a écrit dans le message de news:
%
Bonjour,
2x = 2*X ??
'----------
Sub jj()
x = 10
If [b6] = "" Then [b6].Select
If [b6] <> "" And [c6] = "" Then [c6].Select
If [b6] <> "" And [c6] <> "" And [d6] <> 2 * x Then [b7].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x Then [e6].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x And [e6] <> "" Then
[f6].Select
If [b6] <> "" And [c6] <> "" And [d6] = 2 * x And [e6] <> "" And [f6] <>
"" Then [b7].Select
End Sub
'-----------
--
Salutations
JJ


"Maximus" a écrit dans le message de news:
eps921$pb8$
Bonjour

Voici ce que je voudrai faire en vba sous excel

Dans une plage allant de b6 à b11

si b6 vide, activation b6 et fin procédure
si b6 non vide et c6 vide, activation c6 et fin procédure
si b6 non vide et c6 non vide et d6 non égale à 2X, activation b7 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X, activation e6 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide ,
activation f6 et fin procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide et f6 non
vide, activation b7 et fin procédure


j'ai commencé quelle truc avec des if , et des do until isempty mais je
m'en sors pas...

Toute aide serai la bienvenue..

D'avance merci

@+ Max











Avatar
Daniel
Bonsoir.

Sub test()
Dim c As Range
For Each c In Range("B6:B11")
If c.Value = "" Then c.Activate: Exit Sub
If c.Offset(0, 1).Value = "" Then c.Offset(0, 1).Activate: Exit Sub
If c.Offset(0, 2).Value <> "2X" Then c.Offset(1, 0).Activate: Exit
Sub
If c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value <> "" Then
c.Offset(0, 1).Activate: Exit Sub
End If
If c.Offset(0, 3).Value <> "" Then
c.Offset(0, 4).Activate: Exit Sub
End If
c.Offset(0, 3).Activate: Exit Sub
Next c
End Sub

Daniel
"Maximus" a écrit dans le message de news:
epsgkf$11m$
Merci de votre réponse

Cela fonctionne pour b6, par contre si b6 et c6 sont rempli et d6 <> "2X"
on ne passe pas à b7, une idée du pourquoi ??

Encore merci

@+Max

"Daniel" a écrit dans le message de news:
%
Bonjour.
J'ai pas testé, mais c'est l'idée :

Sub test1()
Dim c As Range
For Each c In Range("B6:B11")
If c.Value = "" Then c.Activate: Exit Sub
If c.Offset(0, 1).Value = "" Then c.Offset(0, 1).Activate: Exit
Sub
If c.Offset(0, 2).Value <> "2X" Then c.Offset(1, 1).Activate: Exit
Sub
If c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value <> "" Then
c.Offset(0, 1).Activate: Exit Sub
End If
If c.Offset(0, 3).Value <> "" Then
c.Offset(0, 4).Activate: Exit Sub
End If
c.Offset(0, 3).Activate: Exit Sub
Next c
End Sub

Cordialement.
Daniel






Avatar
Maximus
Bonjour

Merci, et veuillez m'excuser de ma réponse tardive.

Cela ne marche toujours pas comme je le désirerai mais je vais creuser...

Je tiendrais au courant

@+ Max
"Jacky" a écrit dans le message de news:

Re...
Essaie ceci:
'---------
Sub jj()
For Each c In Range("B6:f11")
If Range("d" & c.Row) <> "2x" Then Range("d" & c.Row).Select: Exit Sub
If c = "" Then
Range(c.Address).Select: Exit Sub
Else
Range("b" & c.Row + 1).Select
End If
Next
End Sub
'-------------

--
Salutations
JJ



Avatar
Maximus
Bonjour

Merci, et veuillez m'excuser de ma réponse tardive.

Cela ne marche toujours pas comme je le désirerai mais je vais creuser...(la
macro s'arrête toujours en b7 même si celle ci est remplie ??)

Je vous informerai de l'évolution

@+ Max
"Daniel" a écrit dans le message de news:
%
Bonsoir.

Sub test()
Dim c As Range
For Each c In Range("B6:B11")
If c.Value = "" Then c.Activate: Exit Sub
If c.Offset(0, 1).Value = "" Then c.Offset(0, 1).Activate: Exit Sub
If c.Offset(0, 2).Value <> "2X" Then c.Offset(1, 0).Activate: Exit
Sub
If c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value <> "" Then
c.Offset(0, 1).Activate: Exit Sub
End If
If c.Offset(0, 3).Value <> "" Then
c.Offset(0, 4).Activate: Exit Sub
End If
c.Offset(0, 3).Activate: Exit Sub
Next c
End Sub

Daniel


Avatar
Maximus
Bonjour

Comme promis je viens donner des nouvelles :
J'ai enfin réussi à obtenir ce que je voulais avec le code suivant :
Sub testjour()
Dim c As Range
For Each c In Range("B6:B11")
If c.Value = "" Then
c.Activate: Exit Sub
End If
If c.Value <> "" And c.Offset(0, 1).Value = "" Then
c.Offset(0, 1).Activate: Exit Sub
End If
If c.Value <> "" And c.Offset(0, 1).Value <> "" And c.Offset(0,
2).Value <> "2X" And c.Offset(1, 0).Value = "" Then
c.Offset(1, 0).Activate: Exit Sub
End If
If c.Value <> "" And c.Offset(0, 1).Value <> "" And c.Offset(0,
2).Value = "2X" And c.Offset(0, 3).Value = "" Then
c.Offset(0, 3).Activate: Exit Sub
End If
If c.Value <> "" And c.Offset(0, 1).Value <> "" And c.Offset(0,
2).Value = "2X" And c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value = ""
Then
c.Offset(0, 4).Activate: Exit Sub
End If
If c.Value <> "" And c.Offset(0, 1).Value <> "" And c.Offset(0,
2).Value = "2X" And c.Offset(0, 3).Value <> "" And c.Offset(0, 4).Value <>
"" And c.Offset(1, 0).Value = "" Then
c.Offset(1, 0).Activate: Exit Sub
End If
Next c
End Sub

Merci à Jacky et Daniel pour leur aide...

A bientôt pour de nouvelles questions...

@+ Max

Ps : je pense que mon code est simplifiable, mais je ne sais pas faire..

"Maximus" a écrit dans le message de news:
eps921$pb8$
Bonjour

Voici ce que je voudrai faire en vba sous excel

Dans une plage allant de b6 à b11

si b6 vide, activation b6 et fin procédure
si b6 non vide et c6 vide, activation c6 et fin procédure
si b6 non vide et c6 non vide et d6 non égale à 2X, activation b7 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X, activation e6 et fin
procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide , activation
f6 et fin procédure
si b6 non vide et c6 non vide et d6 égale à 2X et e6 non vide et f6 non
vide, activation b7 et fin procédure


j'ai commencé quelle truc avec des if , et des do until isempty mais je
m'en sors pas...

Toute aide serai la bienvenue..

D'avance merci

@+ Max