OVH Cloud OVH Cloud

Ficelle ramenée d'hier, mes excuses.....

12 réponses
Avatar
Stéphan DuQuébec
Je sais que ça ne se fait pas ramener une ficelle existante.......mais pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage E26
à E30) dans la procédure qui suit ? Admettons que la condition doit être que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.

10 réponses

1 2
Avatar
Pierre CFI [mvp]
bonjour
si tu reprends la prose de AV
dim c as range,d as range
For Each c In Range("C26:C30")
if c="toto1" then
for each d in Range("E26:E30")
if d="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
end if
next
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
next

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Stéphan DuQuébec" a écrit dans le message de
news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage E26
à E30) dans la procédure qui suit ? Admettons que la condition doit être que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.




Avatar
Pounet95
Bonsoir,
Si ( cette fois ! ) j'ai compris, essaie ceci :
A mettre dans le module de la feuille
Prérequis : TOTO1 et TOTO2 ne sont présents qu'une fois


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c1, c2 As Range
Dim lig1, lig2 As Long
Dim Toto As Boolean

Toto = False
Rows("26:30").Interior.ColorIndex = 48
For Each c1 In Range("C26:C30")
If c1 = "TOTO1" Then
lig1 = c1.Row
For Each c2 In Range("E26:E30")
If c2 = "TOTO2" Then
lig2 = c2.Row
Toto = True
End If
Next c2
End If
Next c1
If Toto = True Then
Rows(lig1).Interior.ColorIndex = 0
Rows(lig2).Interior.ColorIndex = 0
End If
End Sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Stéphan DuQuébec" a écrit dans le
message de news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais
pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage
E26
à E30) dans la procédure qui suit ? Admettons que la condition doit être
que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de
façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.




Avatar
Stéphan DuQuébec
Merci, votre aide est très appréciée.


bonjour
si tu reprends la prose de AV
dim c as range,d as range
For Each c In Range("C26:C30")
if c="toto1" then
for each d in Range("E26:E30")
if d="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
end if
next
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
next

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Stéphan DuQuébec" a écrit dans le message de
news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage E26
à E30) dans la procédure qui suit ? Admettons que la condition doit être que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.









Avatar
Stéphan DuQuébec
Monsieur Pierre,

Depuis votre réponse à ma question, je tente d'appliquer votre solution mais
sans succès. Je ne réussis pas à conjuguer les 2 conditions. Dans le script
actuel de votre procédure proposée, la seule première condition "toto1" en
plage C26:C30 suffit à déclencher l'action du ColorIndex. J'ai tenté
plusieurs variantes......

En toute politesse, pourrais-je vous demander d'y rejeter un oeil ?

Merci.


bonjour
si tu reprends la prose de AV
dim c as range,d as range
For Each c In Range("C26:C30")
if c="toto1" then
for each d in Range("E26:E30")
if d="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
end if
next
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
next

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Stéphan DuQuébec" a écrit dans le message de
news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage E26
à E30) dans la procédure qui suit ? Admettons que la condition doit être que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.









Avatar
Daniel.M
Salut Stéphane,

Le code qui suit
met la couleur du colorindex à 0 si les deux conditions surviennent
met la couleur du colorindex à 48 si non.

For Each c In Range("C26:C30")
if c="toto1" and c(1,3) ="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
Next c

Salutations,

Daniel M.
Avatar
Pounet95
Monsieur Stéphan DuQuébec,
Je ne demande pas que l'on se prosterne à mes pieds quand je tente de donner
une réponse à un problème, ni même un merci ( je crois avoir lu dans un fil
ces
derniers temps que ça faisait 'lèche-cul' !), mais j'aimerais savoir si ma
proposition
tient la route ou non ?
Je ne ferais pas la g..... pour autant, c'est juste pour savoir !
Je pense que nombre de contributeurs occasionnels comme moi seraient heureux
d'avoir un tel retour d'info.

PS : ce mot d'humeur se veut d'une portée générale, et ne vous vise pas pas
en particulier.
Je profite juste du fil

Bonne soirée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Stéphan DuQuébec" a écrit dans le
message de news:

Monsieur Pierre,

Depuis votre réponse à ma question, je tente d'appliquer votre solution
mais
sans succès. Je ne réussis pas à conjuguer les 2 conditions. Dans le
script
actuel de votre procédure proposée, la seule première condition "toto1" en
plage C26:C30 suffit à déclencher l'action du ColorIndex. J'ai tenté
plusieurs variantes......

En toute politesse, pourrais-je vous demander d'y rejeter un oeil ?

Merci.


bonjour
si tu reprends la prose de AV
dim c as range,d as range
For Each c In Range("C26:C30")
if c="toto1" then
for each d in Range("E26:E30")
if d="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
end if
next
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
next

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Stéphan DuQuébec" a écrit dans
le message de
news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais
pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage
E26
à E30) dans la procédure qui suit ? Admettons que la condition doit
être que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire
faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de
façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range
"C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30"
en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.











Avatar
Stéphan DuQuébec
M. Pounet,

Je ne tiens pas votre remarque comme personnelle parce que s'il y a un
"demandeur" poli et retournant un feed back, c'est bien moi !

Ceci dit, je suis encore à essayer de manipuler, au mieux de mes
connaissances qui oui, sont limitées, votre solution parce que, contrairement
à votre prérequis, les valeurs ne se limitent pas à une seule présence.

Soyez certain que lorsque je me serai sorti de mon impasse, vous serez
personnellement remercié, comme c'est mon habitude, en tant que contributeur.
Je lis assez souvent les ficelles de ce site pour savoir que vous en êtes un
précieux.

Salutations.

NB
Et non, je ne considère pas les remerciements comme du l....de c..
Je crois après tout que c'est votre seule et unique paie pour le travail
offert.


Monsieur Stéphan DuQuébec,
Je ne demande pas que l'on se prosterne à mes pieds quand je tente de donner
une réponse à un problème, ni même un merci ( je crois avoir lu dans un fil
ces
derniers temps que ça faisait 'lèche-cul' !), mais j'aimerais savoir si ma
proposition
tient la route ou non ?
Je ne ferais pas la g..... pour autant, c'est juste pour savoir !
Je pense que nombre de contributeurs occasionnels comme moi seraient heureux
d'avoir un tel retour d'info.

PS : ce mot d'humeur se veut d'une portée générale, et ne vous vise pas pas
en particulier.
Je profite juste du fil

Bonne soirée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Stéphan DuQuébec" a écrit dans le
message de news:

Monsieur Pierre,

Depuis votre réponse à ma question, je tente d'appliquer votre solution
mais
sans succès. Je ne réussis pas à conjuguer les 2 conditions. Dans le
script
actuel de votre procédure proposée, la seule première condition "toto1" en
plage C26:C30 suffit à déclencher l'action du ColorIndex. J'ai tenté
plusieurs variantes......

En toute politesse, pourrais-je vous demander d'y rejeter un oeil ?

Merci.


bonjour
si tu reprends la prose de AV
dim c as range,d as range
For Each c In Range("C26:C30")
if c="toto1" then
for each d in Range("E26:E30")
if d="toto2" then
Rows(c.Row).Interior.ColorIndex = 0
end if
next
Else
Rows(c.Row).Interior.ColorIndex = 48
End if
next

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Stéphan DuQuébec" a écrit dans
le message de
news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais
pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage
E26
à E30) dans la procédure qui suit ? Admettons que la condition doit
être que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire
faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de
façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range
"C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30"
en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.















Avatar
Pounet95
Halte au feu !
Suite à la la réponse sur l'autre fil, j'ai voulu reprendre la procédure.
Elle a un effet pervers, on ne peut plus faire de copier/coller ;o(((((
A mettre à la poubelle donc.
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Pounet95" a écrit dans le message de news:
%
Bonsoir,
Si ( cette fois ! ) j'ai compris, essaie ceci :
A mettre dans le module de la feuille
Prérequis : TOTO1 et TOTO2 ne sont présents qu'une fois


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c1, c2 As Range
Dim lig1, lig2 As Long
Dim Toto As Boolean

Toto = False
Rows("26:30").Interior.ColorIndex = 48
For Each c1 In Range("C26:C30")
If c1 = "TOTO1" Then
lig1 = c1.Row
For Each c2 In Range("E26:E30")
If c2 = "TOTO2" Then
lig2 = c2.Row
Toto = True
End If
Next c2
End If
Next c1
If Toto = True Then
Rows(lig1).Interior.ColorIndex = 0
Rows(lig2).Interior.ColorIndex = 0
End If
End Sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Stéphan DuQuébec" a écrit dans
le message de news:
Je sais que ça ne se fait pas ramener une ficelle existante.......mais
pour
cette fois...

Comment faire pour coupler une seconde condition (disons pour la plage
E26
à E30) dans la procédure qui suit ? Admettons que la condition doit être
que
la
valeur de la cellule de la colonne E doit être = à "toto2".

Private sub_Work...change...blablabla
Dim c As Range
For Each c In Range("C26:C30")
Select Case c
Case "toto1"
Rows(c.Row).Interior.ColorIndex = 0
Case Else
Rows(c.Row).Interior.ColorIndex = 48
End Select
End Sub

Ma question n'était peut-être pas claire hier mais ce que je désire
faire,
et ce
avec quoi j'ai de la difficulté, c'est de poser un SECONDE condition de
façon
simultanée.

Non pas que ma valeur C soit "toto1" OU "toto2" dans le Range "C26:C30".

Mais bien que la valeur "toto1" soit présente dans le Range "C26:C30" en
même temps que la valeur "toto2" le soit dans le Range "E26:E30".

Et c'est là que le srcipt de ma valeur me fait défaut.....

Merci.







Avatar
Alain CROS
Bonjour.

Je n'ai pas testé cette procédure mais j'ai déjà constaté parfois un effacement malencontreux du presse papier.

La solution consiste a bloquer le presse papier au début de la procédure puis de le libérer à la fin.

Private Declare Function OpenClipboard& Lib "user32" _
(ByVal hwnd&)
Private Declare Function CloseClipboard& Lib "user32" ()

Sub LaProcQuiEffaceLeClipboard()
OpenClipboard 0&
'
' Le code initial ici
'
CloseClipboard
End Sub

Alain CROS

"Pounet95" a écrit dans le message de news:
Halte au feu !
Suite à la la réponse sur l'autre fil, j'ai voulu reprendre la procédure.
Elle a un effet pervers, on ne peut plus faire de copier/coller ;o(((((
A mettre à la poubelle donc.
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/


Avatar
Pounet95
Bon(jour) soir
Après 16h et la niut tombant je ne sais plus que dire... bref.
Effectivement, j'ai préféré jeter l'éponge car je n'ai pas compris ce
qui pouvait provoquer cette inoprérance du copier/coller ( entre autre ?)
Alors comme on m'a toujours dit " dans le doute abstiens-toi" ,
j'ai fait au mieux derrière ;o)))

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Alain CROS" a écrit dans le message de news:

Bonjour.

Je n'ai pas testé cette procédure mais j'ai déjà constaté parfois un
effacement malencontreux du presse papier.

La solution consiste a bloquer le presse papier au début de la procédure
puis de le libérer à la fin.

Private Declare Function OpenClipboard& Lib "user32" _
(ByVal hwnd&)
Private Declare Function CloseClipboard& Lib "user32" ()

Sub LaProcQuiEffaceLeClipboard()
OpenClipboard 0&
'
' Le code initial ici
'
CloseClipboard
End Sub

Alain CROS

"Pounet95" a écrit dans le message de news:

Halte au feu !
Suite à la la réponse sur l'autre fil, j'ai voulu reprendre la procédure.
Elle a un effet pervers, on ne peut plus faire de copier/coller ;o(((((
A mettre à la poubelle donc.
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/






1 2