IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche de cellules "nommées" d'en Excel à l'autre [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut Recherche de cellules "nommées" d'en Excel à l'autre
    Bonjour à tous,

    Et un petit coucou en même temps aux réguliers de ce forum qui nous donnent toujours des supers solutions à nos problèmes...

    Et en parlant de problème, j'en ai un petit. En effet, j'ouvre un classeur Excel depuis un autre. J'ai donc, parmi toutes mes lignes de code, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.ActiveSheet.Range("NbGeoref").Value = ThisWorkbook.ActiveSheet.Range("SaisieGeoref").Value
    Avec ThisWorkbook le classeur contenant la macro et ActiveWorkbook le classeur contenant le nom de la cellule que je cherche ("NbGeoref")...

    Je cherche à mettre avant cette ligne de code une "recherche" pour savoir si le nom de la cellule du classeur cible existe avant de créer l'erreur 1004 quand Excel ne la trouve pas...

    Et je ne sais absolument pas comment faire...

    Si quelqu'un a une petite idée... Je suis preneur...

    Denis...

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une fonction qui donne si un nom Tmp exist dans un classeur Wbk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function NameExist(ByVal Wbk As Workbook, ByVal Tmp As String) As Boolean
    Dim Nm As Name
     
    For Each Nm In Wbk.Names
        If Nm.Name = Tmp Then
            NameExist = True
            Exit For
        End If
    Next Nm
    End Function
    Ou d'une manière avec gestion d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function NameExist(ByVal Wbk As Workbook, ByVal Tmp As String) As Boolean
     
    On Error Resume Next
    NameExist = Wbk.Names(Tmp).Index
    End Function

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour DenHen,

    La toute première chose que j'ai envie de te dire, c'est que les mentions ActiveWorkbook, ActiveSheet ou encore ThisWorkbook sont à proscrire.
    Utilise de préférence Workbooks("mon_classeur_1") et Worksheets("ma_feuilX") quitte à récupérer leur nom au début de la macro par l'une des mentions que tu utilises.

    Bref, ceci est une aparté.

    Voici une petite fonction pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function CellExiste(NomFeuil As Worksheet, NomCell As String) As Boolean
    Dim f As Range
     
    On Error Resume Next
    Set f = NomFeuil.Range(NomCell)
     
    If Err = 0 Then CellExiste = True
    Set f = Nothing
    End Function
    Voici une procédure afin de la tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
     
    Sub test()
    Dim Wksh As Worksheet
    Dim oStr As String
     
    Set Wksh = Worksheets("Feuil1")
     
    oStr = "ma_cellul"
     
    With Wksh
        If CellExiste(Wksh, oStr) Then
            MsgBox "La cellule """ & oStr & """ existe."
        Else
            MsgBox "La cellule """ & oStr & """ n'existe pas."
        End If
    End With
     
    End Sub
    Voila, n'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

    EDIT : mercatog, toujours plus rapide !

  4. #4
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut Ca marche nikel ! !
    Bonjour à tous,

    Mercatog, merci pour ta Fonction, et quelle rapidité ! !

    Kimy_Ire, merci aussi pour tes conseils, je vais réécrire mon code en fonction de tes remarques... Et j'ai du boulo ! !

    Encore merci à vous...

    Denis...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MOSS 2007]Recherche avancée : proprité avec un quote
    Par royto dans le forum SharePoint
    Réponses: 6
    Dernier message: 14/09/2007, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo