Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment faire pour conbiner deux macro en une seule

13 réponses
Avatar
Daniel Pelletier
Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier d'entré
une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux première
colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", , "5000",
"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub

10 réponses

1 2
Avatar
michdenis
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier d'entré une donné dans la colonne "E" et on
l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième ligne."
**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon doit-on mettre fin à la procédure, le cas échéant
?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18 ... Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce test ?



Salutations!









"Daniel Pelletier" a écrit dans le message de news:
Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier d'entré
une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux première
colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", , "5000",
"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
Avatar
Daniel Pelletier
Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les mettre
parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième
ligne."

**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant

?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18 ...
Pourquoi ? Tu ne donnes pas l'explication

dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce test
?




Salutations!









"Daniel Pelletier" a écrit dans le message de
news:

Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux première
colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", , "5000",
"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub






Avatar
michdenis
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2 procédures :

Tu copies ces 2 procédures dans un module standard, et tu appelles seulement la procédure : Vérification()

'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de news:
Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les mettre
parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième
ligne."

**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant

?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18 ...
Pourquoi ? Tu ne donnes pas l'explication

dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce test
?




Salutations!









"Daniel Pelletier" a écrit dans le message de
news:

Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux première
colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", , "5000",
"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub






Avatar
Daniel Pelletier
ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les deux
première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les mettre
parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième
ligne."

**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant

?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18
...


Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce
test


?



Salutations!









"Daniel Pelletier" a écrit dans le message de
news:

Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur
une


autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré
une


donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub











Avatar
michdenis
Bien, je me suis basé sur ceci issu de ton premier message :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier d'entré
une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne."


Si je comprends bien, ce n'est pas seulement la colonne E mais B, C et E des lignes 18 à 37 qui doivent être
renseignées.

Est-ce que dans ces cellules, il y a un type de données particulières où si l'usager peut se permettre d'inscrire
n'importe quoi ?


Salutations!



"Daniel Pelletier" a écrit dans le message de news:%
ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les deux
première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les mettre
parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième
ligne."

**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant

?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18
...


Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce
test


?



Salutations!









"Daniel Pelletier" a écrit dans le message de
news:

Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur
une


autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré
une


donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub











Avatar
Daniel Pelletier
Je mexcuse de l'oublie.
L'utilisateur doit avoir entré au moin une donné (il a choix de prendre les
déroulers de validation ou ce qu'il veut)
dans colonne B ou C ou les deux et si il oublie d'entré en E la macro lui
impose.
merci

"michdenis" a écrit dans le message de
news:uu7$
Bien, je me suis basé sur ceci issu de ton premier message :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne."


Si je comprends bien, ce n'est pas seulement la colonne E mais B, C et E
des lignes 18 à 37 qui doivent être

renseignées.

Est-ce que dans ces cellules, il y a un type de données particulières où
si l'usager peut se permettre d'inscrire

n'importe quoi ?


Salutations!



"Daniel Pelletier" a écrit dans le message de
news:%

ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les deux
première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon


doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les
mettre


parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième
ligne."

**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant

?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18
...


Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce
test


?



Salutations!









"Daniel Pelletier" a écrit dans le message de
news:

Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur
une


autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré
une


donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
















Avatar
michdenis
Bonjour Daniel,

Les 3 champs devront être rempli. Il pourra le faire en renseignant directement la boîte de dialogue.

'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range, A As Integer

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
For A = 3 To 1 Step -1
If A = 1 Then A = -1
Do
If C.Offset(, -A) = "" Then
C.Offset(, -A) = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If A = -1 And C.Offset(, -A) <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Offset(, -A) <> ""
Next
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'----------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------


Salutations!






"Daniel Pelletier" a écrit dans le message de news:
Je mexcuse de l'oublie.
L'utilisateur doit avoir entré au moin une donné (il a choix de prendre les
déroulers de validation ou ce qu'il veut)
dans colonne B ou C ou les deux et si il oublie d'entré en E la macro lui
impose.
merci

"michdenis" a écrit dans le message de
news:uu7$
Bien, je me suis basé sur ceci issu de ton premier message :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne."


Si je comprends bien, ce n'est pas seulement la colonne E mais B, C et E
des lignes 18 à 37 qui doivent être

renseignées.

Est-ce que dans ces cellules, il y a un type de données particulières où
si l'usager peut se permettre d'inscrire

n'importe quoi ?


Salutations!



"Daniel Pelletier" a écrit dans le message de
news:%

ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les deux
première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon


doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les
mettre


parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37 ième
ligne."

**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle façon
doit-on mettre fin à la procédure, le cas échéant

?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule B18
...


Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi ce
test


?



Salutations!









"Daniel Pelletier" a écrit dans le message de
news:

Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M) sur
une


autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première macro.

En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a entré
une


donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
















Avatar
Daniel Pelletier
Et non, je ne veut pas faire remplir tout les champ.
Je m'explique l'utilisateur si n'a pas entré de donné dans colonne B ou C la
macro passe a la ligne suivante.
et si il a entré en C ou B ou les deux,
il faut que E est une donné avant de copier la ligne dans l'autre
feuille("Base").

Merci

"michdenis" a écrit dans le message de
news:uSh5q$
Bonjour Daniel,

Les 3 champs devront être rempli. Il pourra le faire en renseignant
directement la boîte de dialogue.


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range, A As Integer

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
For A = 3 To 1 Step -1
If A = 1 Then A = -1
Do
If C.Offset(, -A) = "" Then
C.Offset(, -A) = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If A = -1 And C.Offset(, -A) <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Offset(, -A) <> ""
Next
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'----------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------


Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Je mexcuse de l'oublie.
L'utilisateur doit avoir entré au moin une donné (il a choix de prendre
les

déroulers de validation ou ce qu'il veut)
dans colonne B ou C ou les deux et si il oublie d'entré en E la macro lui
impose.
merci

"michdenis" a écrit dans le message de
news:uu7$
Bien, je me suis basé sur ceci issu de ton premier message :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne."


Si je comprends bien, ce n'est pas seulement la colonne E mais B, C et E
des lignes 18 à 37 qui doivent être

renseignées.

Est-ce que dans ces cellules, il y a un type de données particulières où
si l'usager peut se permettre d'inscrire

n'importe quoi ?


Salutations!



"Daniel Pelletier" a écrit dans le message de
news:%

ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les deux
première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon


doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les
mettre


parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur
a



oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37
ième




ligne."
**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon




doit-on mettre fin à la procédure, le cas échéant
?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule
B18




...
Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi
ce




test
?



Salutations!









"Daniel Pelletier" a écrit dans le message
de




news:
Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M)
sur




une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première
macro.





En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a
entré




une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" &
.Range("A65536").End(xlUp)(2).Row)




Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub





















Avatar
michdenis
Sub Vérification()

Dim Rg As Range, C As Range, A As Integer

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
If C.Offset(, 3) <> "" And C.Offset(, -2) <> "" Then
Do
If C = "" Then
C = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C <> ""
End If
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub

Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------















"Daniel Pelletier" a écrit dans le message de news:%
Et non, je ne veut pas faire remplir tout les champ.
Je m'explique l'utilisateur si n'a pas entré de donné dans colonne B ou C la
macro passe a la ligne suivante.
et si il a entré en C ou B ou les deux,
il faut que E est une donné avant de copier la ligne dans l'autre
feuille("Base").

Merci

"michdenis" a écrit dans le message de
news:uSh5q$
Bonjour Daniel,

Les 3 champs devront être rempli. Il pourra le faire en renseignant
directement la boîte de dialogue.


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range, A As Integer

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
For A = 3 To 1 Step -1
If A = 1 Then A = -1
Do
If C.Offset(, -A) = "" Then
C.Offset(, -A) = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If A = -1 And C.Offset(, -A) <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Offset(, -A) <> ""
Next
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'----------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------


Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Je mexcuse de l'oublie.
L'utilisateur doit avoir entré au moin une donné (il a choix de prendre
les

déroulers de validation ou ce qu'il veut)
dans colonne B ou C ou les deux et si il oublie d'entré en E la macro lui
impose.
merci

"michdenis" a écrit dans le message de
news:uu7$
Bien, je me suis basé sur ceci issu de ton premier message :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne."


Si je comprends bien, ce n'est pas seulement la colonne E mais B, C et E
des lignes 18 à 37 qui doivent être

renseignées.

Est-ce que dans ces cellules, il y a un type de données particulières où
si l'usager peut se permettre d'inscrire

n'importe quoi ?


Salutations!



"Daniel Pelletier" a écrit dans le message de
news:%

ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les deux
première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro ("Feuille_insp")

2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon


doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les
mettre


parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si l'utilisateur
a



oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré une donné dans la colonne "E" et on

l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37
ième




ligne."
**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon




doit-on mettre fin à la procédure, le cas échéant
?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule
B18




...
Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi
ce




test
?



Salutations!









"Daniel Pelletier" a écrit dans le message
de




news:
Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M)
sur




une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première
macro.





En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a
entré




une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" &
.Range("A65536").End(xlUp)(2).Row)




Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub





















Avatar
Daniel Pelletier
Salut Michdenis

Rein ne ce passe !! :-((
Je te fait parvenir mon fichier zip

"michdenis" a écrit dans le message de
news:
Sub Vérification()

Dim Rg As Range, C As Range, A As Integer

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
If C.Offset(, 3) <> "" And C.Offset(, -2) <> "" Then
Do
If C = "" Then
C = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C <> ""
End If
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub

Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------















"Daniel Pelletier" a écrit dans le message de
news:%

Et non, je ne veut pas faire remplir tout les champ.
Je m'explique l'utilisateur si n'a pas entré de donné dans colonne B ou C
la

macro passe a la ligne suivante.
et si il a entré en C ou B ou les deux,
il faut que E est une donné avant de copier la ligne dans l'autre
feuille("Base").

Merci

"michdenis" a écrit dans le message de
news:uSh5q$
Bonjour Daniel,

Les 3 champs devront être rempli. Il pourra le faire en renseignant
directement la boîte de dialogue.


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range, A As Integer

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
For A = 3 To 1 Step -1
If A = 1 Then A = -1
Do
If C.Offset(, -A) = "" Then
C.Offset(, -A) = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If A = -1 And C.Offset(, -A) <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Offset(, -A) <> ""
Next
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'----------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------


Salutations!






"Daniel Pelletier" a écrit dans le message de
news:

Je mexcuse de l'oublie.
L'utilisateur doit avoir entré au moin une donné (il a choix de prendre
les

déroulers de validation ou ce qu'il veut)
dans colonne B ou C ou les deux et si il oublie d'entré en E la macro
lui


impose.
merci

"michdenis" a écrit dans le message de
news:uu7$
Bien, je me suis basé sur ceci issu de ton premier message :

"Dans la première macro, on vérifie si l'utilisateur n'a pas oublier
d'entré

une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne."


Si je comprends bien, ce n'est pas seulement la colonne E mais B, C et
E



des lignes 18 à 37 qui doivent être
renseignées.

Est-ce que dans ces cellules, il y a un type de données particulières




si l'usager peut se permettre d'inscrire
n'importe quoi ?


Salutations!



"Daniel Pelletier" a écrit dans le message de
news:%

ReBonjour Michdenis

Ca fonctionne en partie , la macro copie bien dans l'autre feuille
Mais elle n'arrête pas même si l'utilisateur na rien entré dans les
deux



première colonne (B & C).

Elle doit coipier les ligne qui on une entrée dans B ou C.

Merci

"michdenis" a écrit dans le message de
news:%
Bonjour Daniel,

Je n'ai pas tout compris ce que tu voulais, mais j'ai imbriqué les 2
procédures :


Tu copies ces 2 procédures dans un module standard, et tu appelles
seulement la procédure : Vérification()


'-------------------------------------------
Sub Vérification()

Dim Rg As Range, C As Range

With Worksheets("Feuille_insp")
.Unprotect
Set Rg = .Range("E18:E37")

For Each C In Rg
Do
If C = "" Then
C.Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& C.Row & vbNewLine _
& " saisissez la maintenant" _
& " ci-dessous", "PRIORITÉ est " & _
"obligatoire", "2000 ou 5000")
End If
If C <> "" Then
'Appel de l'autre procédure
CopierUnRange C.Offset(, -3).Resize(, 12)
End If
Loop Until C.Value <> ""
Next
.Protect
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-------------------------------------------
Sub CopierUnRange(Rg As Range)

Dim Rg1 As Range
With Worksheets("Base")
Set Rg1 = .Range("A" & .Range("A65536").End(xlUp)(2).Row)
Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
Set Rg1 = Nothing
End Sub
'-------------------------------------------



Salutations!






"Daniel Pelletier" a écrit dans le message
de




news:
Bien Bonjour Michdenis
1: **** ça se passe sur quelle feuille de calcul ?
sur la feuille ou il y a le bouton qui démar la macro
("Feuille_insp")





2: **** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon


doit-on mettre fin à la procédure, le cas échéant
Non il doit entrée une donné !! (ces ligne de code je voulait les
mettre


parceque cela inserer la date et l'heure dans la colonne "L".
3: Dans la procédure 1 ces avec cela que je vérifie si
l'utilisateur




a
oublier la colonne "E" sur chaqu'une des ligne .

Merci


"michdenis" a écrit dans le message de
news:
Bonjour Daniel,

Ta macro No1 manque un peu de précision :

"Dans la première macro, on vérifie si l'utilisateur n'a pas
oublier





d'entré une donné dans la colonne "E" et on
l'oblige de la faire. Tous cela sur tout les ligne entre 18 et 37
ième




ligne."
**** ça se passe sur quelle feuille de calcul ?

"et on l'oblige"
**** Suppose que l'utilisateur ne veut rien savoir ... de quelle
façon




doit-on mettre fin à la procédure, le cas échéant
?

Dans ta procédure No1, tu écris :
For C = 2 To 3
For L = 18 To 37
If Cells(L, C).Value <> "" Then
If Cells(L, 5) = "" Then

**** If Cells(L, C).Value <> "" représente un test sur la cellule
B18




...
Pourquoi ? Tu ne donnes pas l'explication
dans tes commentaires !

**** Même chose pour ceci : If Cells(l, 5) = "" Then : Pourquoi
ce




test
?



Salutations!









"Daniel Pelletier" a écrit dans le message
de




news:
Bonjour à tous

Je veut l'intégrer les deux macros en une seul.

Dans la première macro, on vérifie si l'utilisateur n'a pas
oublier





d'entré
une donné dans la colonne "E"
et on l'oblige de la faire.
Tous cela sur tout les ligne entre 18 et 37 ième ligne.

Dans la deuxième macro on copie les valeur de la ligne (de B à M)
sur




une
autre feuille("Base").
Je voudrait copie les valeur sur les même ligne que la première
macro.





En résumé la Macro vérifie si il y a une entré dans une des deux
première


colonne et si il n'y a pas d'entré en "E" oblige l'utilisateur a
entré




une
donné et puis copie chacune des ligne dans la feuille ("Base").

Merci pour votre aide :-)

Première MACRO

ActiveSheet.Unprotect
Dim l As Long, c As Integer, oblig As Label
ActiveSheet.Unprotect
oblig:
For c = 2 To 3
For l = 18 To 37
If Cells(l, c).Value <> "" Then
If Cells(l, 5) = "" Then
Range("E" & l).Value = InputBox( _
"Il manque une PRIORITE en sur la ligne " _
& l - 17 & vbNewLine _
& " saisissez la maintenant" _
& " ci dessous", "PRIORITÉ est obligatoire", ,
"5000",


"2000")
GoTo oblig
End If
End If
Next l
Next c

Deuxième MACRO

Sub CopierUnRange()______

Dim Rg As Range, Rg1 As Range
With Worksheets("Feuille_insp")
If .Range("E18") <> "" Then
Set Rg = .Range("B18:m18")
With Worksheets("Base")
Set Rg1 = .Range("A" &
.Range("A65536").End(xlUp)(2).Row)




Rg.Copy Rg1
Rg1.Resize(Rg.Rows.Count, Rg.Columns.Count) = Rg.Value
End With
End If
End With
Set Rg = Nothing: Set Rg1 = Nothing
End Sub


























1 2