Bonjour à tous,

J'ai un complément xlam pour de la gestion de texte dans les cellules d'une plage.
Ce complément très succin permet plusieurs actions sur les cellules de la plage sélectionnée :
  • Passer le sélection en Majuscule
  • Passer la sélection en minuscule
  • Réduire (fonction VB Trim) la sélection
  • Ajouter un suffixe sur la sélection
  • Ajouter un préfixe sur la sélection

J'ai inclus un fichier XML pour qu'un onglet spécifique soit ajouté au ruban lors de l'activation du complément.

Le mécanisme des 5 fonctions est quasi identique :
  1. récupération des cellules visibles de la sélection
  2. [InputBox pour saisir le suffixe ou le préfixe]
  3. boucle sur toutes les cellules
  4. action sur chaque cellule



Je vous présente le code de la fonction AjouterPréfixe et la fonction Callback associée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub AjouterPrefixe(ByVal objSelection As Range)
    Dim objCible As Range, objCell As Range, Prefixe
    Application.ScreenUpdating = False
        If objSelection Is Nothing Then GoTo fin
        Prefixe = Application.InputBox(prompt:="Entrez un préfixe", Type:=2)
        If Prefixe = vbNullString Then GoTo fin
            Set objCible = objSelection.SpecialCells(xlCellTypeVisible)
            For Each objCell In objCible.Cells
                objCell.Value = Prefixe & objCell.Value
            Next
fin:
    Set objCible = Nothing
    Application.ScreenUpdating = True
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
'Callback for btAddPrefixe.onAction
Sub btAddPrefix_onAction(control As IRibbonControl)
    Call mfeatures.AjouterPrefixe(Selection)
End Sub
Une fonction Callback est placé dans le groupe contenant les boutons du ruban pour le masquer si aucun classeur n'est ouvert.
La ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
If objSelection Is Nothing Then GoTo fin
n'est donc pas nécessaire car objSelection est toujours la sélection (donc jamais vide sauf si aucun classeur n'est ouvert) mais je préfère la garder.


Voilà pour le contexte. Vos critiques sont les bienvenues.

Ma question est la suivante :
Si la sélection comporte dans cellules fusionnées. En bouclant comme je le fais, je passe plusieurs fois sur la même cellule.
Comment éviter de passer plusieurs fois sur une cellule fusionnée ?

Merci d'avance