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 :

vba excel, appeler les modules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Consultant E-Learning
    Inscrit en
    Avril 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant E-Learning
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2013
    Messages : 62
    Par défaut vba excel, appeler les modules
    Bonjour

    Suite à un retour sur ce forum concernant mon code que je n'arrivais pas a structurer correctement, j'ai repris la structure en incluant des modules (c'est une première pour les sous-routines). Hélas, si je suis là, c'est que cela ne fonctionne pas et je ne comprends pas où est mon erreur. Ca doit être idiot comme erreur, mais j'essaye de comprendre l'intégration de ma routine à mon code et j'aurai besoin de vous pour m'expliquer.
    Merci beaucoup pour votre aide et votre temps.
    Nat
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 191
    Par défaut
    Hello,

    votre description du problème est trop vague. Vous avez des 10aines de sub et de function mais vous ne dites pas ce qui ne fonctionne pas, du coup c'est assez difficile de vous aider.

  3. #3
    Membre confirmé
    Femme Profil pro
    Consultant E-Learning
    Inscrit en
    Avril 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant E-Learning
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2013
    Messages : 62
    Par défaut
    effectivement, excuser moi, c'est les appelles des macros qui ne fonctionnent pas. Lorsque vous cliquez sur une des lignes de la feuille accueil ou si vous utiliser le formulaire de recherche en cliquant sur le plongeur vert en haut de la colonne H et que vous y entrer un numéro de patient existant ou non, le formulaire de Saisie devrait s'ouvrir (rempli si le patient est présent (avec les infos de la feuille complet (Public Sub ChargerDonneesDepuisComplet) ou vide (juste avec le mois, l'année et le n° de patient rentrer) et de la on rempli le formulaire et les données doivent être enregistrer dans accueil et complet ou dans accueil et consultation selon les optionbutton choisi et de nouveau en appelant les modules adéquats.
    Vous verrai que dès l'ouverture, je bloque sur le premier module appelé.


    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
    20
    21
    Public Sub OuvrirFormulaire(patientNumber As String)
        Dim wsComplet As Worksheet
        Dim wsConsultation As Worksheet
        Dim wsAccueil As Worksheet
        Dim findRowComplet As Range
        Dim findRowConsultation As Range
        Dim findRowAccueil As Range
    
        ' Initialisation des feuilles
        Set wsComplet = ThisWorkbook.Sheets("complet")
        Set wsConsultation = ThisWorkbook.Sheets("Consultation")
        Set wsAccueil = ThisWorkbook.Sheets("accueil")
        
        ' Rechercher le patient dans "complet"
        Set findRowComplet = wsComplet.columns(6).Find(What:=patientNumber, LookIn:=xlValues, LookAt:=xlWhole)
        If Not findRowComplet Is Nothing Then
            ChargerDonneesDepuisComplet wsComplet, findRowComplet.Row, Me
    
    
    
        End If
    Merci beaucoup
    Nat

  4. #4
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 191
    Par défaut
    Re,

    sans aller beaucoup plus loin, ChargerDonneesDepuisComplet wsComplet, findRowComplet.Row, Me envoi 3 arguments et la procédure Sub ChargerDonneesDepuisComplet(ws As Worksheet, rowIndex As Long) n'en attend que 2 ! Le nombre doit être équivalent (voire inférieur quand il y a des données optionnelles)
    Pourquoi ajoutez vous "Me" à chaque appel de procédure ?

  5. #5
    Membre confirmé
    Femme Profil pro
    Consultant E-Learning
    Inscrit en
    Avril 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant E-Learning
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2013
    Messages : 62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'charger les données de la feuille complet
    Public Sub ChargerDonneesDepuisComplet(wsComplet As Worksheet, patientRow As Long, ByRef frm As Object)
        With frm
            .txtmois.Value = wsComplet.Cells(patientRow, 1).Value
            .txtan.Value = wsComplet.Cells(patientRow, 2).Value
            .oburgent.Value = (wsComplet.Cells(patientRow, 3).Value = "Urgence")
            .obelectif.Value = (wsComplet.Cells(patientRow, 3).Value = "Electif")
            .obconsultohb.Value = (wsComplet.Cells(patientRow, 3).Value = "Consultation Hyperbare")
            .obconsultplonge.Value = (wsComplet.Cells(patientRow, 3).Value = "Consultation Plongée")
            .cmbstatus.Value = wsComplet.Cells(patientRow, 4).Value
            .obambu.Value = (wsComplet.Cells(patientRow, 5).Value = "AMBU")
            .obhosp.Value = (wsComplet.Cells(patientRow, 5).Value = "HOSP")
    Parce que j'ai 3 argument dans mes sous-routine?

  6. #6
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 191
    Par défaut
    Ben si 3 arguments dans la "sous-routine" l'appel doit en contenir 3 aussi.

    Ca fonctionne maintenant ?

Discussions similaires

  1. [VBA Excel] Ordonner les tabulations dans un formulaire
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2006, 13h41
  2. [VBA Excel] Forcer les majuscules
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/06/2006, 12h12
  3. [VBA][Excel]Récupérer les valeurs du graphe...
    Par Samourai dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2006, 10h51
  4. [VBA][Excel] appel de fonction
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/12/2005, 10h53
  5. VBA Excel : Appel d'un userform à l'aide d'une variable
    Par pierrot657 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/06/2005, 23h08

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