[Catégorie modifiée VB6 -> VBA] Macro Rechercher Remplacer + boutton

sftorso Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 22 avril 2011 - 21 avril 2011 à 09:13
sftorso Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 22 avril 2011 - 22 avril 2011 à 14:34
Bonjour,

J'ai un fichier excel constitué de plusieurs onglet.
Dans chaque onglet, je veux utiliser la fonction remplacer pour remplacer les cellules qui contiennent les mots "nom" et "prénom" par le nom et prénom d'une personne.

J'ai récupéré ce script VB sur le forum qui fonctionne pour un onglet mais par pour plusieurs onglets.
Comment intégrer la recherche dans tout les onglets classeur ?

Sub Path()

Dim nom As String
Dim prenom As String

nom = InputBox("Nom", "Identification")
prenom = InputBox("Prenom", "Identification")

Cells.Replace What:="nom", Replacement:=nom, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="prenom", Replacement:=prenom, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

MsgBox ("Done")
End Sub

Au passage, je voudrais modifier le script pour ne pas avoir une boite de dialogue qui apparait pour entrer les nom et prénom. Je préfère taper le nom et le prénom dans 2 cellules et appliquer la fonction remplacer en cliquant sur le bouton.

Merci d'avance

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 avril 2011 à 09:40
Salut

En l'absence de précision, les instructions comme Cells s'appliquent à la feuille active.
Tu as juste à activer la feuille sur laquelle tu veux appliquer ton programme, genre
Sheets("ma feuille").Activate

Pour lister les feuilles, premier réflexe : la recherche.
Voir boucle For-Next et Sheets.Count, par exemple

Supprimer InputBox : c'est le b.a.ba
nom = Sheets("la feuille").Range("A1").Value

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
biolo24fr Messages postés 87 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 28 mai 2013 1
21 avril 2011 à 10:12
Salut,

un truc du genre...

Sub Path()

Dim nom As String
Dim prenom As String
Dim i As Integer


nom = Sheets("Feuil1").Range("E2").Value ' cellule où tu remplis le nom
prenom = Sheets("Feuil1").Range("E3").Value' cellule où tu remplis le nom
For i = 2 To Sheets.Count  'on commence à la deuxième feuille et on parcours
         Sheets(i).Cells.Replace What:="nom", Replacement:=nom, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        Sheets(i).Cells.Replace What:="prenom", Replacement:=prenom, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Next

MsgBox ("Done")
End Sub



Mais attention dans prenom y'as nom, à toi d'adapter....

-----------------------------------------------------------------------------------------------------------
De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent.
0
sftorso Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 22 avril 2011
21 avril 2011 à 11:10
Merci pour votre aide, ca marche !

Un dernier détail: je voudrais qu'en cliquant sur un autre boutton, ca me réinitialise mes onglets au cas ou je fais une erreur. Après utilisation de la macro on peut pas revenir en arrière et du coup je dois fermer excel.
0
sftorso Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 14:34
Vous avez une idée ?
0
Rejoignez-nous