Modification des noms de case à cocher et cellule de référence

Pour accélérer le processus de recherche, est-il possible de n'explorer qu'une partie de la feuille, les 25 dernières colonnes correspondant à la taille du nouvel exercice?

Je ne pense pas. Mais si tu ne fais pas de debug.print qui ne sert qu'au débogage, ce sera rapide. L'autre soucis est que je n'arrive pas à m'affranchir du select.

La seule façon de ne traiter que les dernières colonnes est de s'appuyer justement sur Range(.LinkedCell).Column pour le reste du traitement.

Bonjour,

Super! Merci pour les réponses précises et les explications données.

Je pense maintenant avoir tous les éléments pour finaliser un module de changement d'Exercice qui fonctionne.

Effectivement, dans le code terminé, je peux supprimer les debug.print pour accélérer le processus.

Comme les colonnes sont toujours rajoutées après les colonnes du dernier exercice, est-il possible de commencer la recherche des objets en commençant par les dernières colonnes et terminer le processus dès détection du passage sur la dernière colonne de l'exercice recopiée?..

Cdt

JM

Complément au message précédent:

J'ai testé le code sur un fichier réel, c'est effectivement très rapide si on neutralise les Debug Print.

Tu peux oublier ma dernière question.

Encore un grand merci pour le support fourni.

Je vais essayer de finaliser le tout rapidement et je vais fermer le sujet ensuite.

Bon weekend

Cdt

JM

Bonsoir,

j'ai finalisé une version qui fonctionne. Le processus est accéléré en ne sélectionnant que les Cases à cocher dont le n° de colonne est supérieur à celui de la dernière colonne de l'exercice qui est terminé et que l'on recopie. Comme le pas de recopie est toujours le même, en partant de l'info de cellule associée qui a été recopiée, il est possible de calculer la cellule associée et de l'enregistrer.

Sub Find_Checkbox()
'
Dim sh As Shape
Dim Col As Integer
Dim Lin As Integer
Dim Pas As Integer
Pas = 27
' NoCol = 309  exer 2020
    ActiveSheet.Unprotect
    For Each sh In ActiveSheet.Shapes
        If TypeControle(sh) = 1 Then
            ActiveSheet.Shapes.Range(Array(sh.Name)).Select
            With Selection
                If Range(.LinkedCell).Column > NoCol Then
                    ' Debug.Print sh.Name, .Left, .LinkedCell, Range(.LinkedCell).Row, Range(.LinkedCell).Column
                    Col = Range(.LinkedCell).Column + Pas
                    Lin = Range(.LinkedCell).Row
                    .Value = xlOff
                    .LinkedCell = LetCol(Col) & "$" & Lin
                End If
            End With
        End If
    Next
End Sub

Function TypeControle(sh As Shape)
    TypeControle = "Ce n'est pas un contrôle"
    On Error Resume Next
    TypeControle = sh.FormControlType
End Function

Encore un grand merci pour le support et les explications.

Cdt

JMV

Rechercher des sujets similaires à "modification noms case cocher reference"