Modifier nom avec un USF dans colonnes masquées
RésoluLe Pingou Messages postés 12372 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour le Forum,
Dans mon fichier j’ai un USF qui me permet de modifier des noms (sur des colonnes) sur différentes feuilles.
Celui-ci fonctionne bien.
J’ai un 2ème fichier qui est exactement le même, mais qui a les colonnes masquées.
Le souci c’est que je n’arrive pas à trouver le code me permettant de faire fonctionner mon code avec les colonnes masquées.
Dans mon fichier (que j'arrive pas à vous joindre) les colonnes (en jaune) ne sont pas masquées, juste pour que vous les voyiez.
Les feuilles sont protégées mais sans mot de passe.
Merci d’avance.
Marcelio
Private Sub CommandButton2_Click()
If TextBox4 = "" Then Exit Sub
If MsgBox("Remplacer " & TextBox4 & " par " & TextBox2, vbExclamation + vbYesNo, "CONFIRMATION") = vbNo Then Exit Sub
nom = TextBox4
Set c = Sheets("Mois").[AA1:AA100].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
nom = TextBox4
Set c = Sheets("Mois").[BK1:BK100].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
For k = 1 To Sheets.Count
If Left(Sheets(k).Name, 7) = "semaine" Then
Set c = Sheets(k).[DJ13:EK22].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
End If
Next
UserForm_Initialize
End Sub
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
CommandButton2.Enabled = IIf(TextBox4 = TextBox2, False, True)
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub ListBox1_Change()
If kit = True Then Exit Sub
TextBox4 = ListBox1.List(ListBox1.ListIndex, 0)
TextBox2 = TextBox4
End Sub
Private Sub UserForm_Initialize()
With Feuil1
ListBox1.List = .Range("BK1:BK" & .[BK100].End(3).Row).Value
End With
End Sub
- Modifier nom avec un USF dans colonnes masquées
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Modifier nom iphone - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
18 réponses
Bonjour,
Il faut quand même fournir quelques explications :
Qu'est ce que représente "c" ? (c.Value = TextBox2)
Qu'est-ce qu'il faut mettre dans textbox4 ? Dans Listbox1 ?
Daniel
Bonjour,
Vous dites: Les feuilles sont protégées mais sans mot de passe.
De ce fait il faut supprimer la protection au début du code et la remettre à la fin!
Private Sub CommandButton2_Click()
Sheets("Feuil1").Unprotect
' ...votre code
Sheets("Feuil1").Protect
End Sub
Bonjour,
Dans la Listbox1 tous les noms à modifier.
La textbox4 : nom avant la modif (Ancien Nom)
La textbox2 : ou le nom est modifier (Nouveau nom)
Merci à Le Pingou pour joindre le fichier.
https://www.swisstransfer.com/d/8faaa93e-d965-42e1-aaf2-d8c800ef3ccf
Merci
Marcelio
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe n'ai pas compris. J'ai masqué Semaine01. Le remplacement se fait normalement. Donne un exemple de dysfonctionnement.
Daniel
Je dis les colonnes, mais pas la feuille.
Les colonnes en jaune à masquées sur feuille Mois et toutes les feuilles semaine
Dans mon fichier j’ai un USF qui me permet de modifier des noms (sur des colonnes) sur différentes feuilles.
J’ai un 2ème fichier qui est exactement le même, mais qui a les colonnes masquées.
Marcelio
Bonjour,
Merci du retour.
Voir fichier :https://www.swisstransfer.com/d/c98466c9-31aa-4da2-9a2d-4f2b0048536f
Essayer en modifiant le code après : nom = TextBox4 et Set c = Nothing
Private Sub CommandButton2_Click()
If TextBox4 = "" Then Exit Sub
If MsgBox("Remplacer " & TextBox4 & " par " & TextBox2, vbExclamation + vbYesNo, "CONFIRMATION") = vbNo Then Exit Sub
nom = TextBox4
Set c = Sheets("Mois").[AA1:AA100].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
nom = TextBox4
Columns("BK").EntireColumn.Hidden = False
Set c = Sheets("Mois").Range("BK1:BK100").Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
'Set c = Sheets("Mois").Columns("BK").Find(What:=nom, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
Columns("BK").EntireColumn.Hidden = True
J'ai masquer les colonnes jaunes dans les feuilles semaine, et j'ai fait des tests.
Et j'ai rajouté le code suivant pour la colonne AA pour la feuille Mois
nom = TextBox4
Columns("AA").EntireColumn.Hidden = False
Set c = Sheets("Mois").[AA1:AA100].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
Columns("AA").EntireColumn.Hidden = True
Tout fonctionne correctement pour la feuille Mois
Pour les feuilles semaine j'ai rajouté le code suivant, mais cela ne fonctionne pas.
Columns("DJ:EK").EntireColumn.Hidden = False
For k = 1 To Sheets.Count
If Left(Sheets(k).Name, 7) = "semaine" Then
Set c = Sheets(k).[DJ13:EK22].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
Columns("DJ:EK").EntireColumn.Hidden = False
Marcelio
Bonjour,
Le code pour les feuilles (semaines) comme ceci:
For k = 1 To Sheets.Count
If Left(Sheets(k).Name, 7) = "semaine" Then
Sheets(k).Unprotect
Columns("DJ:EK").EntireColumn.Hidden = False
Set c = Sheets(k).[DJ13:EK22].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
Columns("DJ:EK").EntireColumn.Hidden = True
Sheets(k).Protect
End If
Next
Bonsoir,
J'ai masqué les colonnes jaunes dans les feuilles semaine.
Et cela n'a pas fonctionné.
Marcelio
Bonjour,
Eh oui comme ce n'est pas mon code j'ai oublié une indication : ajouter l'instruction : (Sheets(k).) devant Columns.....
For k = 1 To Sheets.Count
If Left(Sheets(k).Name, 7) = "semaine" Then
Sheets(k).Unprotect
Sheets(k).Columns("DJ:EK").EntireColumn.Hidden = False
Set c = Sheets(k).[DJ13:EK22].Find(nom, LookIn:=xlValues, Lookat:=xlWhole)
On Error Resume Next
c.Value = TextBox2
Set c = Nothing
Sheets(k).Columns("DJ:EK").EntireColumn.Hidden = True
Sheets(k).Protect
End If
Next
Bonjour Le Pingou et le forum,
Pour les feuilles semaine.
J'ai testé les derniers codes ceux-ci fonctionnent bien.
Mais j'ai fait un essai avec le même nom sur les 4 colonnes.
Et bizarrement seul le 1er a été modifié.
Seriez-vous pourquoi les 4 n'ont pas été modifiés.
Marcelio
Bonjour,
Mais j'ai fait un essai avec le même nom sur les 4 colonnes.
La fonction "Find()" cherche le premier nom correspondant. Si vous avez plus d'un nom identique la fonction prendra toujours le premier.
Bonjour,
Essaie :
Private Sub CommandButton2_Click()
Dim C As Range
If TextBox4 = "" Then Exit Sub
If MsgBox("Remplacer " & TextBox4 & " par " & TextBox2, vbExclamation + vbYesNo, "CONFIRMATION") = vbNo Then Exit Sub
With Sheets("Mois")
Set C = .[AA1:AA100].Find(Me.TextBox4.Value, , , xlWhole)
If Not C Is Nothing Then C.Value = Me.TextBox2.Value
Set C = .[BK1:BK100].Find(Me.TextBox4.Value, , , xlWhole)
If Not C Is Nothing Then C.Value = Me.TextBox2.Value
End With
For k = 1 To Sheets.Count
If Left(Sheets(k).Name, 7) = "semaine" Then
With Sheets(k)
.Unprotect
For Each C In .[DJ13:EK22]
If C.Value = Me.TextBox4 Then Debug.Print C.Address(0, 0)
If C.Value = Me.TextBox4 Then C = Me.TextBox2.Value
Next C
.Protect
End With
End If
Next
UserForm_Initialize
End Sub
Bonjour Daniel,
J'avais trouvé une autre solution, mais cela faisait beaucoup de code.
Du coup ton code est parfait, aucun bug et tout est modifié.
Je te remercie beaucoup de ton aide.
Merci à toi et merci aussi à Le Pingou de son aide.
Bon après-midi à tous les 2 et au forum.
Marcelio
