Rechercher remplacer (Ctrl F) en macro

Lino Renzi

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'un coup de main des rois d'Excel...
J'ai automatisé un tournoi de pétanque avec les prénoms de chaque joueur.

J'aimerais créer une macro permettant de rechercher un prénom (d'un joueur absent) et de le remplacer (par son remplaçant). La feuille est protégée et je ne peux pas toujours être présent pour le faire "manuellement".

Je tourne autour du pot depuis des heures sur le forum qui propose des solutions assez proches de ce que je recherche mais malheureusement pas mon bonheur!!!

N'hésitez pas à me faire savoir si vous avez besoin de plus amples renseignements.

Je vous remercie d'avance de votre précieuse aide
 

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Merci de votre prompte réponse CBernardT,

Comme vous me l'avez demandé, je vous joins une petite partie de la partie de boccia.

En colonne B sont insérés les 16 joueurs "officiels" ainsi que les 8 équipes pour permettre la fonction "Alea" pour les tirages au sort et ceci se répète au fil des matches.
Une fois ma feuille programmée, je cache les colonnes ABCD et je verrouille!
Afin de ne pas intervenir à chaque tournoi et expliquer : "Déverrouillez la feuille, insérez le mot de passe, cliquez Ctrl + F, insérez sous "Rechercher" le nom du joueur "habituel" absent pour ce tournoi, inscrivez sous "Remplacer" le nom du remplaçant et cliquez sur "Remplacer tout", je désirerais une macro ou "Userform" qui permet à l'utilisateur de faire le changement de joueur sans autre forme d'intervention.

La macro ou userform doit donc être capable de déverrouiller, faire un rechercher/remplacer et reverrouiller...

Merci d'avance du temps investi à m'aider

Meilleures salutations
 

Pièces jointes

  • Copie de petanque_botte.zip
    27.5 KB · Affichages: 133
  • Copie de petanque_botte.zip
    27.5 KB · Affichages: 128
  • Copie de petanque_botte.zip
    27.5 KB · Affichages: 129
Dernière édition:

job75

XLDnaute Barbatruc
Re : Rechercher remplacer (Ctrl F) en macro

Re,

Bon on va faire sans.

Créez d'abord un UserForm (USF) qui sera ouvert en cliquant sur un bouton dans la feuille.

Cet USF comprendra 2 Labels, 2 TextBox et 2 CommandButtons.

Les codes de ces 2 boutons :

Code:
Private Sub CommandButton1_Click() 'le nommer "Remplacer"
If TextBox1 = "" Then TextBox1.SetFocus: Exit Sub
If Range("B33:B1000").Find(TextBox1, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then _
  MsgBox "Le prénom """ & TextBox1 & """ est introuvable...", 48: TextBox1.SetFocus: Exit Sub
If TextBox2 = "" Then TextBox2.SetFocus: Exit Sub
ActiveSheet.Unprotect "MotDePasse"
Cells.Replace TextBox1, TextBox2, LookAt:=xlPart
ActiveSheet.Protect "MotDePasse"
Unload UserForm1
End Sub

Private Sub CommandButton2_Click() 'le nommer "Fermer"
Unload UserForm1
End Sub

A+
 
Dernière édition:

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Bonsoir Messieurs, bonsoir le forum,

Mil excuses pour l'oubli du mot de passe.... à toutes fins utiles : "lino"....

Je vais tester de suite les informations que vous m'avez fournies...

Sincères remerciements pour votre aide
 
Dernière édition:

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Re Job75,

Il me semble avoir suivi vos indications à la lettre. Néanmoins, aucun remplacement ne se fait et le bouton "Fermer" ne fonctionne pas non plus!

Auriez-vous la gentillesse de vérifier mon travail et m'indiquer où sont mes fautes?

Un grand merci
 

Pièces jointes

  • Copie de petanque_botte.zip
    30.1 KB · Affichages: 85
  • Copie de petanque_botte.zip
    30.1 KB · Affichages: 80
  • Copie de petanque_botte.zip
    30.1 KB · Affichages: 71

job75

XLDnaute Barbatruc
Re : Rechercher remplacer (Ctrl F) en macro

Bonsoir Lino Renzi,

Bravo pour l'UserForm.

Malheureusement vous aviez mis les macros dans le Module1, alors qu'il fallait les mettre dans le code de l'UserForm.

Dans l'Explorateur de projet, clic droit sur la feuille UserForm1 => Code.

Nota : pour ceux qui ont mal lu, mot de passe d'accès à VBA : "lino"

A+
 

Pièces jointes

  • Copie de petanque_botte.zip
    30.6 KB · Affichages: 175
  • Copie de petanque_botte.zip
    30.6 KB · Affichages: 145
  • Copie de petanque_botte.zip
    30.6 KB · Affichages: 150

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Bonjour Job75,

C'est tout simplement grandiose!!!

Mon projet sera ainsi superbement peaufiné....

Merci infiniment de mettre votre talent au service des exceliens assurément moins doués...

Merci encore et bonne journée
 

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Bonsoir à tous,

Je relance ce fil car je désirais rajouter le bout de code qui me permettrait de rechercher le prénom voulu et de le remplacer sur toutes les feuilles de mon classeur ... et non une seule.

Merci d'avance pour ce complément d'information
 

job75

XLDnaute Barbatruc
Re : Rechercher remplacer (Ctrl F) en macro

Bonjour Lino, le forum,

De retour d'un très long voyage.

Voici la macro modifiée, dans le code de l'UserForm :

Code:
Private Sub CommandButton1_Click() 'bouton Remplacer
If TextBox1 = "" Then TextBox1.SetFocus: Exit Sub
If TextBox2 = "" Then TextBox2.SetFocus: Exit Sub
Dim w As Worksheet, flag As Boolean
For Each w In Worksheets 'recherche dans toutes les feuilles
  If Not w.Cells.Find(TextBox1, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then
    flag = True
    w.Unprotect "lino" 'même mot de passe pour toutes les feuilles
    w.Cells.Replace TextBox1, TextBox2, LookAt:=xlPart
    w.Protect "lino"
  End If
Next
If Not flag Then
  With TextBox1
    MsgBox "Le prénom """ & .Text & """ n'existe sur aucune feuille...", 48
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text) 'sélection du texte entier
  End With
  Exit Sub
End If
Unload UserForm1
End Sub

Fichier joint.

A+
 

Pièces jointes

  • Copie de petanque_botte(1).zip
    35.5 KB · Affichages: 92

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Bonsoir job75, bonsoir le forum,

J'espère que votre séjour c'est bien passé...
Je rentre à mon tour d'Italie où il neige dans les Marche!!!

J'ouvre ma page et je trouve une réponse encore une fois parfaite de job75...
Un grand merci pour ce code fonctionnel...

Oserais-je abuser en vous demandant s'il est possible d'interdire à l'utilisateur d'insérer le même prénom par erreur? J'ai dû intervenir suite à une telle erreur et n'ai pu remplacer les deux "Yvette" par une "Maryse"!!! Je l'ai donc changé manuellement...

Très gentil à vous de m'aider, je vous souhaite une belle soirée
 

job75

XLDnaute Barbatruc
Re : Rechercher remplacer (Ctrl F) en macro

Bonjour Lino, le forum,

Je comprends que le prénom de remplacement ne doit pas être utilisé s'il existe déjà dans une feuille.

Alors voici la macro complétée :

Code:
Private Sub CommandButton1_Click() 'bouton Remplacer
If TextBox1 = "" Then TextBox1.SetFocus: Exit Sub
If TextBox2 = "" Then TextBox2.SetFocus: Exit Sub
Dim w As Worksheet, flag As Boolean
With TextBox2
  For Each w In Worksheets 'recherche dans toutes les feuilles
    If Not w.Cells.Find(.Text, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then
      MsgBox "Le prénom """ & .Text & """ est déjà utilisé...", 48
      .SetFocus
      .SelStart = 0
      .SelLength = Len(.Text) 'sélection du texte entier
      Exit Sub
    End If
  Next
End With
For Each w In Worksheets
  If Not w.Cells.Find(TextBox1) Is Nothing Then
    flag = True
    w.Unprotect "lino" 'même mot de passe pour toutes les feuilles
    w.Cells.Replace TextBox1, TextBox2
    w.Protect "lino"
  End If
Next
If flag Then Unload UserForm1: Exit Sub
With TextBox1
  MsgBox "Le prénom """ & .Text & """ n'existe sur aucune feuille...", 48
  .SetFocus
  .SelStart = 0
  .SelLength = Len(.Text)
End With
End Sub

Rappelons que le mot de passe VBA est toujours lino.

Edit : j'ai finalement supprimé LookAt:=xlPart.

Je l'avais mis pour "réinitialiser" la boîte de dialogue Rechercher (Ctrl+F)...

A+
 

Pièces jointes

  • Copie de petanque_botte(2).zip
    35.9 KB · Affichages: 108
Dernière édition:

Lino Renzi

XLDnaute Nouveau
Re : Rechercher remplacer (Ctrl F) en macro

Bonsoir job75 et le forum,

Au risque de me répéter.... MERCI infiniment...
Encore un abus job75, puis-je trier mes plages de départ qui ne contiennent pas forcément les mêmes prénoms (ex: range("A7:C60")) sur mes 12 feuilles (de Janvier à Décembre)? J'ai ajouté les points et le classement dans les colonnes B et C du mois précédent...
J'ai essayé de partir d'une macro enregistrée et de l'adapter avec la variable "w" dans la macro que vous m'avez fournie mais je tourne en rond, je n'arrive pas à moduler le nom des feuilles:
Range("A7:C60").Select
ActiveWorkbook.Worksheets("Janvier").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Janvier").Sort.SortFields.Add Key:=Range("A7:A60") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Janvier").Sort
.SetRange Range("A7:C60")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Comment boucler sur toutes les feuilles alors qu'il insère le nom de l'onglet... J'ai réussi à adapter le code mais en copiant 12 fois le code ci-dessus et en changeant le nom de l'onglet.... pas top!!!!

Cher job75, je ne sais pas si cela se fait sur le forum, mais est-il possible de vous envoyer un cadeau ou quelques Euros pour services rendus? J'espère ne pas contrevenir à la charte d'ExcelDownload que je n'ai pas parcourue avant d'écrire ces quelques lignes...

Je vous souhaite une bonne soirée et vous réitère mes remerciements pour votre précieuse aide
 

job75

XLDnaute Barbatruc
Re : Rechercher remplacer (Ctrl F) en macro

Bonjour LIno, le forum,

Je vous souhaite un joyeux Noël Lino, ainsi qu'à tous ceux qui passeront par ici.

Nous sommes tous des bénévoles sur XLD, et le travail fourni est rémunéré par la satisfaction qu'en tirent ceux que nous aidons.

Encore faut-il qu'ils le disent, ce n'est pas toujours le cas :(

De nouveau en vacances (en Normandie), je rentre à Paris le 4 janvier, et je verrai alors ce que je peux faire sur le dernier problème posé.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 841
Membres
103 972
dernier inscrit
steeter