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 :

Référence à une plage nommée [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Par défaut Référence à une plage nommée
    Bonjour à vous, nobles experts.
    Avant de conclure avec ma problématique, une petite introduction et explication de la situation.

    Je dispose d'un classeur composé de 2 feuilles avec, pour chacune, une plage de taille variable nommée
    • Feuille_1
      contient les informations générales des Centres référencés, chaque centre étant identifié par une numéro unique à 4 chiffres.
      Une plage a été nommée "Numéro_centre" et définie avec la formule suivante : =DECALER('envoi binder'!$B$3;0;0;NBVAL('envoi binder'!$B:$B)-1)
      Ainsi, la taille de la plage n'est pas fixée mais peut donc s’agrandir automatiquement au fur et à mesure de l'arrivée de nouveaux centres en repérant le numéro de centre ajoutée dans la colonne B.
    • Feuille_2
      contient des données d'analyse pour des Centres, chaque analyse étant identifiée sous la forme [nom_analyse]_[numéro_centre]_[numéro_analyse].
      Une même centre peut donc avec plusieurs entrées, différenciées par le [numéro_analyse]. Exemples d'identifiants pour les analyses "Flugubu"
      Flugubu_3454_01
      Flugubu_5482_01
      Flugubu_3454_02
      Flugubu_3454_03
      Une plage a été nommée "Datas" et définie avec la formule suivante : =DECALER('Test-Run - Données'!$B$5;0;0;NBVAL('Test-Run - Données'!$B:$B)-1;23)


    Voilà donc le corps du sujet :
    Je me suis lancé dans la conception d'un userform pour la saisie des données (puis renvoi dans le bon tableau) et, pour limiter les erreurs, je voudrais que l'identifiant d'analyse soit implémenté automatiquement selon celles déjà existante dans la base.
    Je m'explique : dans les exemples données, si je vais pour effectuer une saisie pour le centre 5123, le userform m'affichera automatiquement l'identifiant "Flugubu_5123_01", puisque ma saisie sera la première pour le centre 5123. De même, si je vais pour effectuer une nouvelle saisie pour le centre 3454, là le userform détectera qu'il existe déjà des entrées pour ce centre et affichera donc l'identifiant "Flugubu_3454_04"

    Je suis arrivé dans un premier temps à paramétrer cette implémentation automatique via formule "classique" dans une feuille sous forme matricielle :
    {=SI(C4="";"";"Flugubu_"&C4&"_"&TEXTE(MAX(SI(TEXTE(C4;"#")=STXT(DECALER('Feuille_2'!B5;0;0;NBVAL('Feuille_2'!B:B));9;4);CNUM(DROITE(DECALER('Feuille_2'!B5;0;0;NBVAL('Feuille_2'!B:B));2));""))+1;"00"))}

    Voici donc ma problématique.
    Lorsque je passe en VBA, je pensais effectuer la recherche des entrées déjà existantes et l'implémentation automatique de l'identifiant d'analyse de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ListSite_afterupdate
    Dim num_analyse As Integer, i As Integer
    num_analyse = 1
    '-- Définition des variables : num_analyse pour le [numéro_analyse] et i pour une coordonnée de cellule
    For i = 1 To [nombre de lignes contenues dans la plage nommée "Datas"]
    If InStr([cellule de la plage "Datas" sur la première colonne](i.1), ListSite.Value) <> 0 Then num_analyse = num_analyse +1
    Next i
    '-- Recherche si le centre existe déjà dans les entrée et si c'est le cas, implémente le num_analyse
    id_analyse.Caption = "Flugubu_" & ListSite.Value & "_" & id_analyse.Value
    '-- Affichage de l'identification dans un label de l'userform
    End Sub
    Je vous épargne les différentes tentatives pour faire appel à la plage "Datas" via Range et qui se sont soldées toutes par des erreurs de compilations ou des erreurs 1004.
    Je suppose aisément que je m'y prends comme une tanche, mais je cherche, je lis, je parcours et je ne trouve pas comment me débloquer... Du coup, je suis tristesse, je suis chagrin, je suis désarroi.

    "Aidez moi [insérez votre nom ici], vous êtes mon seul espoir."

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Bonjour,

    Et avec le code ci-après, c'est mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ListSite_afterupdate()
    Dim num_analyse As Integer, i As Integer
    num_analyse = 1
    '-- Définition des variables : num_analyse pour le [numéro_analyse] et i pour une coordonnée de cellule
      For i = 1 To [Datas].Rows.Count
        If InStr([Datas].Cells(i, 1), ListSite.Value) <> 0 Then num_analyse = num_analyse + 1
      Next i
    '-- Recherche si le centre existe déjà dans les entrée et si c'est le cas, implémente le num_analyse
    id_analyse.Caption = "Flugubu_" & ListSite.Value & "_" & id_analyse.Value
    '-- Affichage de l'identification dans un label de l'userform
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Par défaut
    Un grand merci defluc, je me trompais complétement dans la syntaxe de la déclaration de la plage nommée, alors que c'était finalement 'simple'... du coup c'était vachement moins efficace.

    J'espère maintenant me dépatouiller comme un grand avec les OptionButton et autres CheckBox.

    Encore merci pour l'aide.

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

Discussions similaires

  1. [XL-2010] ComboBox sur une feuille Excel faisant référence à une plage nommée
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/05/2015, 18h08
  2. [XL-2003] MFC - référence celulle d'une plage nommée
    Par dario69 dans le forum Conception
    Réponses: 2
    Dernier message: 02/06/2014, 09h08
  3. Réponses: 3
    Dernier message: 12/09/2013, 11h27
  4. Adresse de Cellule d'une plage nommée
    Par edelweisseric dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/06/2007, 09h13
  5. [VBA-E] référence à une plage
    Par doc funki dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 02/02/2007, 20h09

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