Vba recherche cellule contenant liaison

charette63

XLDnaute Occasionnel
Bonjour à toutes et à tous,

J'ai un classeur que je sauvegarde (jusque là ça va) et j'aimerais inserer un code à la macro qui me permettrait de figer les valeurs des cellules contenant une liaison externe (il y a des liaisons internes au classeur qui restent necessaires).

J'ai bien trouvé sur le net la façon de procéder via excel pour trouver ces cellules : rechercher *[, et j'ai le listing de mes cellules.

J'essaye donc de le traduire en vba (pour le test, je teinte les cellules en jaune):

Code:
Sub Macro111()

Dim Plage As Range
Dim Cellule As Range
Dim MotRechercher As String
MotRechercher = "["

For Each Cellule In Range("A1:M50")
If InStr(1, Cellule.Value, MotRechercher) > 0 Then
    Range(Cellule.Address).Select
    With Selection.Interior
        .ColorIndex = 6 'jaune
        .Pattern = xlSolid
    End With
End If
Next Cell
End Sub


Mais avec ce code, il me "jauni" les cellules dans lesquelles il y a physiquement le sigle "[" et non celles qui ont la liaison

Y a t-il un p'tit quelque chose à ajouter au code pour combler mes "exigences"

merci pour votre aide

Cordialement
Thierry
 
G

Guest

Guest
Re : Vba recherche cellule contenant liaison

Bonjour,

Cellule est un oblet Range alors Range(Cellule.address).Select est une redondance. Cellule.Select suffirait si un select est nécessaire (rarement le cas en vba excel).

Sinon, voici une méthode pour ne parcourir que les cellules contenant des formules et ne tester que la formule:

Code:
Sub Macro111()
    Dim Plage As Range
    Dim Cellule As Range
    Dim MotRechercher As String
    MotRechercher = "["
    
    'Ne rechercher que dans les cellules contenant des formule
    On Error Resume Next
    'S'il n'y a aucune cellule avec formule SpecialCells lève une erreur
    Set Plage = Range("A1:M50").SpecialCells(xlCellTypeFormulas)
    On Error GoTo 0
    
    If Not Plage Is Nothing Then
        For Each Cellule In Plage
           'Ne teste que la formule et non la valeur
            If InStr(1, Cellule.Formula, MotRechercher) > 0 Then
                With Cellule.Interior
                    .ColorIndex = 6    'jaune
                    .Pattern = xlSolid
                End With
            End If
        Next Cellule
    End If
End Sub

Pour le reste (remplacement du lien externe dans la formule) je te laisse faire.

A+

P.s. si cela ne va pas, joindre un fichier

[Edit] une des deux déclaration de 'Plage' a été supprimée.
 
Dernière modification par un modérateur:

charette63

XLDnaute Occasionnel
Monsieur Hasco, magnifique. Ceci comble toute mes espérances.

Merci pour la petite explication, pour la suite de la macro, je ne devrais pas rencontrer de problème.

Juste une petite chose pour les plus ignares que moi en matière de vba, "Plage" est déclarée deux fois, il faut en supprimer une.

Tous mes remerciements

bonne soirée
 

Discussions similaires

Réponses
2
Affichages
154
Réponses
0
Affichages
155
Réponses
7
Affichages
332

Statistiques des forums

Discussions
312 320
Messages
2 087 218
Membres
103 497
dernier inscrit
JP9231