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

Recherche Remplace VBA

11 réponses
Avatar
Caro
Bonjour,

Voici du code que j’ai trouvé un site et adapté pour moi. Il fonctionne
bien, seulement que le range que je dois modifier, contient des validations
par listes, et celles-ci ne sont pas prises en considération si le nom n’est
pas valide, le changement est fait de toute façon. Y aurait-il une façon de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.

10 réponses

1 2
Avatar
Daniel
Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le nom n'est
pas valide, le changement est fait de toute façon. Y aurait-il une façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.


Avatar
Caro
Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé quitte, il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le nom n'est
pas valide, le changement est fait de toute façon. Y aurait-il une façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.







Avatar
Daniel
Dans quel cas le nom n'est pas valide ? sur quel critère se baser pour dire
qu'il ne l'est pas ?
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé quitte,
il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le
chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il
fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le nom
n'est
pas valide, le changement est fait de toute façon. Y aurait-il une
façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.









Avatar
Caro
Bonjour,

chaque cellule dans mon range a la validation suivante qui est la liste du
personnel complet.:

DECALER($DQ$10;;;NBVAL($DQ$10:$DQ$300);1)


Dans quel cas le nom n'est pas valide ? sur quel critère se baser pour dire
qu'il ne l'est pas ?
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé quitte,
il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le
chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il
fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le nom
n'est
pas valide, le changement est fait de toute façon. Y aurait-il une
façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.














Avatar
Daniel
Si j'ai bien compris :

Sub test2()
txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
If IsNumeric(Application.Match(txtRemp, Range("DQ10:DQ300"), 0)) Then
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
Else
MsgBox "Nom incorrect"
End If
End Sub

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

Bonjour,

chaque cellule dans mon range a la validation suivante qui est la liste du
personnel complet.:

DECALER($DQ$10;;;NBVAL($DQ$10:$DQ$300);1)


Dans quel cas le nom n'est pas valide ? sur quel critère se baser pour
dire
qu'il ne l'est pas ?
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé
quitte,
il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le
chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de
news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il
fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le
nom
n'est
pas valide, le changement est fait de toute façon. Y aurait-il une
façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer
?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer
?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.
















Avatar
Caro
Oui, super ça marche...

C'est un peu long, et il n'y a pas de sablier indiquant que quelque chose se
passe... Ca me gêne mais j'ose quand-même te demander comment faire pour
informer l'utilisateur d'attendre.

Merci de ton aide.

Caro


Si j'ai bien compris :

Sub test2()
txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
If IsNumeric(Application.Match(txtRemp, Range("DQ10:DQ300"), 0)) Then
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
Else
MsgBox "Nom incorrect"
End If
End Sub

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

Bonjour,

chaque cellule dans mon range a la validation suivante qui est la liste du
personnel complet.:

DECALER($DQ$10;;;NBVAL($DQ$10:$DQ$300);1)


Dans quel cas le nom n'est pas valide ? sur quel critère se baser pour
dire
qu'il ne l'est pas ?
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé
quitte,
il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le
chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de
news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il
fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le
nom
n'est
pas valide, le changement est fait de toute façon. Y aurait-il une
façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer
?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer
?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.





















Avatar
Caro
J'ai trouvé une façon d'accélérer...

Puisque au changement de nom, toutes les heures se calculent au fur et à
mesure, dans ma macro, je vais mettre le calcul manuel avant de procéder.

Merci beaucoup.

Caro


Si j'ai bien compris :

Sub test2()
txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
If IsNumeric(Application.Match(txtRemp, Range("DQ10:DQ300"), 0)) Then
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
Else
MsgBox "Nom incorrect"
End If
End Sub

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

Bonjour,

chaque cellule dans mon range a la validation suivante qui est la liste du
personnel complet.:

DECALER($DQ$10;;;NBVAL($DQ$10:$DQ$300);1)


Dans quel cas le nom n'est pas valide ? sur quel critère se baser pour
dire
qu'il ne l'est pas ?
Daniel
"Caro" a écrit dans le message de news:

Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé
quitte,
il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le
chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de
news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il
fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si le
nom
n'est
pas valide, le changement est fait de toute façon. Y aurait-il une
façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer
?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer
?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.





















Avatar
lSteph
Bonjour,

Solution par doubleclick sur un des noms à remplacer
http://cjoint.com/?lzsAHoCDTr

Cdlt.

lSteph

avec userform (propriété matchrequired à true)
Dans userform1 : Combobox1 CommandButton1 et CommandButton2

'''******Code Module1
Public myStr As String
Public myRplc As String

'''''****code de Feuil1

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim isect As Range
Set isect = Intersect(Range("GI10:IR84"), Target)
If isect Is Nothing Then Exit Sub
myStr = Target.Text
UserForm1.Show
End Sub

'''''Code Userform1

Private Sub CommandButton1_Click()
Dim c As Range
If IsEmpty(ComboBox1) Then
ComboBox1.SetFocus: Exit Sub
Else
myRplc = ComboBox1
Application.ScreenUpdating = False
Application.StatusBar = "Veuillez Patienter"
For Each c In [GI10:IR84].Cells
c.Value = Application.Substitute(c.Text, myStr, myRplc)
Next c
Application.StatusBar = False
Unload Me
End If
End Sub

Private Sub CommandButton2_Click()
Unload Me: End

End Sub


Private Sub UserForm_Initialize()
Dim myplg As Range
Set myplg = Range("dq10", [dq65536].End(xlUp))
ComboBox1.RowSource = myplg.Address
End Sub



Bonjour,

Voici du code que j’ai trouvé un site et adapté pour moi. Il fonctionne
bien, seulement que le range que je dois modifier, contient des validations
par listes, et celles-ci ne sont pas prises en considération si le nom n’est
pas valide, le changement est fait de toute façon. Y aurait-il une façon de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.


--
- -

Avatar
Jacquouille
Bonsoir Caro
Juste en fin de macro, tu peux toujours mettre un msgbox "C'est fini,
tralala" -)
Bonne soirée
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

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

J'ai trouvé une façon d'accélérer...

Puisque au changement de nom, toutes les heures se calculent au fur et à
mesure, dans ma macro, je vais mettre le calcul manuel avant de procéder.

Merci beaucoup.

Caro


Si j'ai bien compris :

Sub test2()
txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
If IsNumeric(Application.Match(txtRemp, Range("DQ10:DQ300"), 0)) Then
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
Else
MsgBox "Nom incorrect"
End If
End Sub

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

Bonjour,

chaque cellule dans mon range a la validation suivante qui est la liste
du
personnel complet.:

DECALER($DQ$10;;;NBVAL($DQ$10:$DQ$300);1)


Dans quel cas le nom n'est pas valide ? sur quel critère se baser pour
dire
qu'il ne l'est pas ?
Daniel
"Caro" a écrit dans le message de
news:

Bonjour,

Un exemple de ce que je veux en faire ?
Je dois gérer des horaires mensuels de personnel. Si un employé
quitte,
il
est remplacé par une autre personne qui aura le même horaire que le
précédent, donc, au lieu de changer manuellement partout dans le
chiffrier,
j'effectuerais un recherche et remplace.

Merci.


Bonjour.
Tu peux donner un exemple ?
Cordialement.
Daniel
"Caro" a écrit dans le message de
news:

Bonjour,

Voici du code que j'ai trouvé un site et adapté pour moi. Il
fonctionne
bien, seulement que le range que je dois modifier, contient des
validations
par listes, et celles-ci ne sont pas prises en considération si
le
nom
n'est
pas valide, le changement est fait de toute façon. Y aurait-il
une
façon
de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous
remplacer
?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer
?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.























Avatar
Caro
Bonjour Iseph,

J'aime bien l'approche pour la sélection de la personne à remplacer c'est
plus facile pour l'utilisateur que d'avoir à taper le nom dans un input box.
Je vais essayer d'en comprendre le fonctionnement.

Merci beaucoup.

Caro


Bonjour,

Solution par doubleclick sur un des noms à remplacer
http://cjoint.com/?lzsAHoCDTr

Cdlt.

lSteph

avec userform (propriété matchrequired à true)
Dans userform1 : Combobox1 CommandButton1 et CommandButton2

'''******Code Module1
Public myStr As String
Public myRplc As String

'''''****code de Feuil1

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Dim isect As Range
Set isect = Intersect(Range("GI10:IR84"), Target)
If isect Is Nothing Then Exit Sub
myStr = Target.Text
UserForm1.Show
End Sub

'''''Code Userform1

Private Sub CommandButton1_Click()
Dim c As Range
If IsEmpty(ComboBox1) Then
ComboBox1.SetFocus: Exit Sub
Else
myRplc = ComboBox1
Application.ScreenUpdating = False
Application.StatusBar = "Veuillez Patienter"
For Each c In [GI10:IR84].Cells
c.Value = Application.Substitute(c.Text, myStr, myRplc)
Next c
Application.StatusBar = False
Unload Me
End If
End Sub

Private Sub CommandButton2_Click()
Unload Me: End

End Sub


Private Sub UserForm_Initialize()
Dim myplg As Range
Set myplg = Range("dq10", [dq65536].End(xlUp))
ComboBox1.RowSource = myplg.Address
End Sub



Bonjour,

Voici du code que j’ai trouvé un site et adapté pour moi. Il fonctionne
bien, seulement que le range que je dois modifier, contient des validations
par listes, et celles-ci ne sont pas prises en considération si le nom n’est
pas valide, le changement est fait de toute façon. Y aurait-il une façon de
contourner ce probléme ?.
Voici le code:

Sub Remplace()

txtSup = Application.InputBox("Quel personne désirez-vous remplacer ?")
txtRemp = Application.InputBox("Par quoi voulez-vous la remplacer ?")
Application.ScreenUpdating = False
Range("GI10 :IR84").Select
For Each C In Selection
C.Value = Application.Substitute(C.Value, txtSup, txtRemp)
Next C
End Sub

Merci pour vos idées.


--
- -






1 2