Modifier nom avec un USF dans colonnes masquées

Résolu
marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12275 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

18 réponses

  1. danielc0 Messages postés 2196 Date d'inscription   Statut Membre Dernière intervention   286
     

    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


    0
  2. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    Bonjour,

    Pour joindre le fichier , sur : https://www.swisstransfer.com/fr

    et poster le lien.


    0
  3. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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

    0
  4. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    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


    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. danielc0 Messages postés 2196 Date d'inscription   Statut Membre Dernière intervention   286
     

    Je n'ai pas compris. J'ai masqué Semaine01. Le remplacement se fait normalement. Donne un exemple de dysfonctionnement.

    Daniel


    0
  7. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    Ce n'est pas les feuilles qu'il faut masquer, mais seulement les colonnes en jaune.

    Marcelio


    0
    1. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
       

      Bonjour,

      C'est étonnant car sur poste 1 vous dites la feuille et pour les colonnes : Masquées!

      De quelle colonne et sur quel feuille ?

      0
  8. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    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


    0
  9. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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

    0
  10. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    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

    0
  11. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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


    0
  12. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    Bonsoir,

    J'ai masqué les colonnes jaunes dans les feuilles semaine.

    Et cela n'a pas fonctionné.

    Marcelio


    0
  13. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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


    0
  14. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    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


    0
  15. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    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.


    0
  16. danielc0 Messages postés 2196 Date d'inscription   Statut Membre Dernière intervention   286
     

    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
    

    0
  17. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    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


    0
  18. marcelio Messages postés 64 Date d'inscription   Statut Membre Dernière intervention  
     

    Bonjour Daniel et le forum,

    Le fichier fonctionne super bien.

    Mais si j'ai un seul nom dans la colonne BK j'ai un message d'erreur.

    Aurais tu une solution à ce problème

    Merci d'avanve

    Marcelio


    0
  19. Le Pingou Messages postés 12275 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     

    Bonjour,

    Juste au passage, modifié comme suit le code:

    Private Sub UserForm_Initialize()
    With Feuil1
    ListBox1.List = .Range("BK1:BK" & 1 + .Range("BK1000").End(xlUp).Row).Value
    End With
    End Sub


    0