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

aide macro rechercher remplacer

5 réponses
Avatar
nico
Bonjour,

je debute en vba (mais ai assez de logique quand meme)

je me suis lancé recement en vba et j'ai besoin de faire une macro dont je
ne sais meme pas comment commencer.
Voici ce que je veut faire:

J'ai 2 classeurs: pour exemple source.xls et n'importe quel classeur ouvert

Dans source.xls en feuil1 dans la colonne B j'ai les données a trouver et
dans la colonne C j'ai les données a remplacer B et C étant correspondants
par ligne.

Dans le classeur que j'aurais d'ouvert
je veux lancer une macro (via un bouton que j'aurais attribué donc macro a
mettre dans le xla si j'ai bien compris)


Cette macro doit dans la feuille affichéé (donc active) (pas de plage
définie, donc toute la feuille) rechercher si une cellule est identique a une
cellule de la colonne B des source.xls et la remplacer par la cellule de la
colonne C correspondant a celle de la colonne B (MEME LIGNE) sans que le
classeur source.xls s'ouvre (enfin visuellement)

J'espere avoir ete le plus clair possible (c'est pas facile) ;-)

si vous pouviez m'aiguiller sur la marche a suivre me donner un exemple, un
site ou autre.

merci d'avance
--
nico

5 réponses

Avatar
Céline
bonjour Nico

voici un morceau de code à insérer dans la procédure de ton bouton
(double-clic sur le bouton en mode création)

Workbooks.Open "source.xls"

ThisWorkbook.Activate
For Each cellule In ActiveSheet.UsedRange
If Not cellule.FormulaLocal = "" Then
Set c =
Workbooks("source.xls").Worksheets("Feuil1").Range("B1").EntireColumn.Find( cellule.Value,
LookIn:=xlValues, searchorder:=xlByRows)
If Not c Is Nothing Then
cellule.FormulaLocal =
Workbooks("source.xls").Worksheets("Feuil1").Range("C" & c.Row).Value
End If
End If
Next cellule

Workbooks("source.xls").Close

attention,
dans la ligne Set c = .... il faudra que tu remplaces Feuil1 par le nom
de la feuille sur laquelle sont remplies les colonnes B & C (dans ton
classeur Source.xls)
si des lignes de code sont écrites en rouge c'est à cause du retour
à la ligne automatique de ce message.

J'espère que ca te convient. n'hésite pâs si besoin d eplus de
détails.

bonne journée
Céline


Bonjour,

je debute en vba (mais ai assez de logique quand meme)

je me suis lancé recement en vba et j'ai besoin de faire une macro dont je
ne sais meme pas comment commencer.
Voici ce que je veut faire:

J'ai 2 classeurs: pour exemple source.xls et n'importe quel classeur ouve rt

Dans source.xls en feuil1 dans la colonne B j'ai les données a trouver et
dans la colonne C j'ai les données a remplacer B et C étant correspon dants
par ligne.

Dans le classeur que j'aurais d'ouvert
je veux lancer une macro (via un bouton que j'aurais attribué donc macr o a
mettre dans le xla si j'ai bien compris)


Cette macro doit dans la feuille affichéé (donc active) (pas de plage
définie, donc toute la feuille) rechercher si une cellule est identique a une
cellule de la colonne B des source.xls et la remplacer par la cellule de la
colonne C correspondant a celle de la colonne B (MEME LIGNE) sans que le
classeur source.xls s'ouvre (enfin visuellement)

J'espere avoir ete le plus clair possible (c'est pas facile) ;-)

si vous pouviez m'aiguiller sur la marche a suivre me donner un exemple, un
site ou autre.

merci d'avance
--
nico


Avatar
nico
merci beaucoup, c'est genial ca marche
et en plus je comprennd la macro, a vrai dire j'aurais pas fait comme ca
(j'en suis pas encore la

merci beaucoup celine
--
nico





bonjour Nico

voici un morceau de code à insérer dans la procédure de ton bouton
(double-clic sur le bouton en mode création)

Workbooks.Open "source.xls"

ThisWorkbook.Activate
For Each cellule In ActiveSheet.UsedRange
If Not cellule.FormulaLocal = "" Then
Set c > Workbooks("source.xls").Worksheets("Feuil1").Range("B1").EntireColumn.Find(cellule.Value,
LookIn:=xlValues, searchorder:=xlByRows)
If Not c Is Nothing Then
cellule.FormulaLocal > Workbooks("source.xls").Worksheets("Feuil1").Range("C" & c.Row).Value
End If
End If
Next cellule

Workbooks("source.xls").Close

attention,
dans la ligne Set c = .... il faudra que tu remplaces Feuil1 par le nom
de la feuille sur laquelle sont remplies les colonnes B & C (dans ton
classeur Source.xls)
si des lignes de code sont écrites en rouge c'est à cause du retour
à la ligne automatique de ce message.

J'espère que ca te convient. n'hésite pâs si besoin d eplus de
détails.

bonne journée
Céline


Bonjour,

je debute en vba (mais ai assez de logique quand meme)

je me suis lancé recement en vba et j'ai besoin de faire une macro dont je
ne sais meme pas comment commencer.
Voici ce que je veut faire:

J'ai 2 classeurs: pour exemple source.xls et n'importe quel classeur ouvert

Dans source.xls en feuil1 dans la colonne B j'ai les données a trouver et
dans la colonne C j'ai les données a remplacer B et C étant correspondants
par ligne.

Dans le classeur que j'aurais d'ouvert
je veux lancer une macro (via un bouton que j'aurais attribué donc macro a
mettre dans le xla si j'ai bien compris)


Cette macro doit dans la feuille affichéé (donc active) (pas de plage
définie, donc toute la feuille) rechercher si une cellule est identique a une
cellule de la colonne B des source.xls et la remplacer par la cellule de la
colonne C correspondant a celle de la colonne B (MEME LIGNE) sans que le
classeur source.xls s'ouvre (enfin visuellement)

J'espere avoir ete le plus clair possible (c'est pas facile) ;-)

si vous pouviez m'aiguiller sur la marche a suivre me donner un exemple, un
site ou autre.

merci d'avance
--
nico






Avatar
nico
bonjour,

la macro fonctionne parfaitement tant qu'elle reste dans un classeur
mais des quelle est installée dans une macro complementaire, elle s'execute
sans afficher d'erreur mais rien ne se passe

une idée??
la je vois pas

merci
--
nico





bonjour Nico

voici un morceau de code à insérer dans la procédure de ton bouton
(double-clic sur le bouton en mode création)

Workbooks.Open "source.xls"

ThisWorkbook.Activate
For Each cellule In ActiveSheet.UsedRange
If Not cellule.FormulaLocal = "" Then
Set c > Workbooks("source.xls").Worksheets("Feuil1").Range("B1").EntireColumn.Find(cellule.Value,
LookIn:=xlValues, searchorder:=xlByRows)
If Not c Is Nothing Then
cellule.FormulaLocal > Workbooks("source.xls").Worksheets("Feuil1").Range("C" & c.Row).Value
End If
End If
Next cellule

Workbooks("source.xls").Close

attention,
dans la ligne Set c = .... il faudra que tu remplaces Feuil1 par le nom
de la feuille sur laquelle sont remplies les colonnes B & C (dans ton
classeur Source.xls)
si des lignes de code sont écrites en rouge c'est à cause du retour
à la ligne automatique de ce message.

J'espère que ca te convient. n'hésite pâs si besoin d eplus de
détails.

bonne journée
Céline


Bonjour,

je debute en vba (mais ai assez de logique quand meme)

je me suis lancé recement en vba et j'ai besoin de faire une macro dont je
ne sais meme pas comment commencer.
Voici ce que je veut faire:

J'ai 2 classeurs: pour exemple source.xls et n'importe quel classeur ouvert

Dans source.xls en feuil1 dans la colonne B j'ai les données a trouver et
dans la colonne C j'ai les données a remplacer B et C étant correspondants
par ligne.

Dans le classeur que j'aurais d'ouvert
je veux lancer une macro (via un bouton que j'aurais attribué donc macro a
mettre dans le xla si j'ai bien compris)


Cette macro doit dans la feuille affichéé (donc active) (pas de plage
définie, donc toute la feuille) rechercher si une cellule est identique a une
cellule de la colonne B des source.xls et la remplacer par la cellule de la
colonne C correspondant a celle de la colonne B (MEME LIGNE) sans que le
classeur source.xls s'ouvre (enfin visuellement)

J'espere avoir ete le plus clair possible (c'est pas facile) ;-)

si vous pouviez m'aiguiller sur la marche a suivre me donner un exemple, un
site ou autre.

merci d'avance
--
nico






Avatar
Céline
bonjour,
peux-tu préciser exactement comment est fait le chnagement?
(ce que tu entends par macro complémentaire)
si elle s'execute, as-tu réussi à voir ce qu'elle executait et où
cela se passait ? (sur quelles feuilles)
en attendant tes précisions..
céline


bonjour,

la macro fonctionne parfaitement tant qu'elle reste dans un classeur
mais des quelle est installée dans une macro complementaire, elle s'exe cute
sans afficher d'erreur mais rien ne se passe

une idée??
la je vois pas

merci
--
nico





bonjour Nico

voici un morceau de code à insérer dans la procédure de ton bouton
(double-clic sur le bouton en mode création)

Workbooks.Open "source.xls"

ThisWorkbook.Activate
For Each cellule In ActiveSheet.UsedRange
If Not cellule.FormulaLocal = "" Then
Set c =
Workbooks("source.xls").Worksheets("Feuil1").Range("B1").EntireColumn.F ind(cellule.Value,
LookIn:=xlValues, searchorder:=xlByRows)
If Not c Is Nothing Then
cellule.FormulaLocal =
Workbooks("source.xls").Worksheets("Feuil1").Range("C" & c.Row).Value
End If
End If
Next cellule

Workbooks("source.xls").Close

attention,
dans la ligne Set c = .... il faudra que tu remplaces Feuil1 par le n om
de la feuille sur laquelle sont remplies les colonnes B & C (dans ton
classeur Source.xls)
si des lignes de code sont écrites en rouge c'est à cause du retour
à la ligne automatique de ce message.

J'espère que ca te convient. n'hésite pâs si besoin d eplus de
détails.

bonne journée
Céline


Bonjour,

je debute en vba (mais ai assez de logique quand meme)

je me suis lancé recement en vba et j'ai besoin de faire une macro dont je
ne sais meme pas comment commencer.
Voici ce que je veut faire:

J'ai 2 classeurs: pour exemple source.xls et n'importe quel classeur ouvert

Dans source.xls en feuil1 dans la colonne B j'ai les données a trou ver et
dans la colonne C j'ai les données a remplacer B et C étant corre spondants
par ligne.

Dans le classeur que j'aurais d'ouvert
je veux lancer une macro (via un bouton que j'aurais attribué donc macro a
mettre dans le xla si j'ai bien compris)


Cette macro doit dans la feuille affichéé (donc active) (pas de p lage
définie, donc toute la feuille) rechercher si une cellule est ident ique a une
cellule de la colonne B des source.xls et la remplacer par la cellule de la
colonne C correspondant a celle de la colonne B (MEME LIGNE) sans que le
classeur source.xls s'ouvre (enfin visuellement)

J'espere avoir ete le plus clair possible (c'est pas facile) ;-)

si vous pouviez m'aiguiller sur la marche a suivre me donner un exem ple, un
site ou autre.

merci d'avance
--
nico








Avatar
nico
Bonjour,

je viens de rentrer de déplacement et n'ai donc pu te repondre sur le forum,
ce soir j'ai regardé vite fait et ai trouvé la reponse a ma question, voici
la macro corrigée pour qu'elle fonctionne en macro compléméntaire.

Mais il subsiste toujours un problème, et de taille. Qaund j'avais essayé ta
macro dans un petit classeur d'essais c'etait ok mais j'avais pas vu que si
on avit le cas suivant ca ne marche pas:


fichier source: (exemple)

colonne b colonne c
j150867 titi
a22 toto
z3589 tonton

feuille a traiter:

avant execution après execution
macro
j150867 titi
a22 toto
z3589 titi

z3589 est remplacé TITI au lieu de tonton, et ceux parce dans j150867 il y a
un 5 comme dans z3589. donc la macro ne tiens pas compte du terme entier mais
d'un des caractères, c'est très ennuyeux.
As tu une idée pour corriger celà


macro corrigée pour demande précedente:
Sub Recherche_remplace()

Set savclass = ActiveWorkbook
Set savfeuil = ActiveSheet

Application.ScreenUpdating = False

Workbooks.Open "c:source.xls"

savclass.Activate
savfeuil.Select

For Each cellule In ActiveSheet.UsedRange
If Not cellule.FormulaLocal = "" Then
Set c =
Workbooks("source.xls").Worksheets("Feuil1").Range("B1").EntireColumn.Find(cellule.Value, LookIn:=xlValues, searchorder:=xlByRows)
If Not c Is Nothing Then
cellule.FormulaLocal =
Workbooks("source.xls").Worksheets("Feuil1").Range("C" & c.Row).Value
End If
End If
Next cellule

Workbooks("source.xls").Close

Application.ScreenUpdating = True

TitleMsgBox = "Fin de traitement"
MsgBox "Traitement Terminé Sans Erreur", 64, TitleMsgBox
End Sub

--
nico



bonjour,
peux-tu préciser exactement comment est fait le chnagement?
(ce que tu entends par macro complémentaire)
si elle s'execute, as-tu réussi à voir ce qu'elle executait et où
cela se passait ? (sur quelles feuilles)
en attendant tes précisions..
céline


bonjour,

la macro fonctionne parfaitement tant qu'elle reste dans un classeur
mais des quelle est installée dans une macro complementaire, elle s'execute
sans afficher d'erreur mais rien ne se passe

une idée??
la je vois pas

merci
--
nico





bonjour Nico

voici un morceau de code à insérer dans la procédure de ton bouton
(double-clic sur le bouton en mode création)

Workbooks.Open "source.xls"

ThisWorkbook.Activate
For Each cellule In ActiveSheet.UsedRange
If Not cellule.FormulaLocal = "" Then
Set c > > > Workbooks("source.xls").Worksheets("Feuil1").Range("B1").EntireColumn.Find(cellule.Value,
LookIn:=xlValues, searchorder:=xlByRows)
If Not c Is Nothing Then
cellule.FormulaLocal > > > Workbooks("source.xls").Worksheets("Feuil1").Range("C" & c.Row).Value
End If
End If
Next cellule

Workbooks("source.xls").Close

attention,
dans la ligne Set c = .... il faudra que tu remplaces Feuil1 par le nom
de la feuille sur laquelle sont remplies les colonnes B & C (dans ton
classeur Source.xls)
si des lignes de code sont écrites en rouge c'est à cause du retour
à la ligne automatique de ce message.

J'espère que ca te convient. n'hésite pâs si besoin d eplus de
détails.

bonne journée
Céline


Bonjour,

je debute en vba (mais ai assez de logique quand meme)

je me suis lancé recement en vba et j'ai besoin de faire une macro dont je
ne sais meme pas comment commencer.
Voici ce que je veut faire:

J'ai 2 classeurs: pour exemple source.xls et n'importe quel classeur ouvert

Dans source.xls en feuil1 dans la colonne B j'ai les données a trouver et
dans la colonne C j'ai les données a remplacer B et C étant correspondants
par ligne.

Dans le classeur que j'aurais d'ouvert
je veux lancer une macro (via un bouton que j'aurais attribué donc macro a
mettre dans le xla si j'ai bien compris)


Cette macro doit dans la feuille affichéé (donc active) (pas de plage
définie, donc toute la feuille) rechercher si une cellule est identique a une
cellule de la colonne B des source.xls et la remplacer par la cellule de la
colonne C correspondant a celle de la colonne B (MEME LIGNE) sans que le
classeur source.xls s'ouvre (enfin visuellement)

J'espere avoir ete le plus clair possible (c'est pas facile) ;-)

si vous pouviez m'aiguiller sur la marche a suivre me donner un exemple, un
site ou autre.

merci d'avance
--
nico