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 :

Executer une macro sur une feuille puis aller sur autre feuille


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
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut Executer une macro sur une feuille puis aller sur autre feuille
    Bonsoir à tous
    Petite question avant le we de Paques

    J'ai une base de données sur une feuille sur laquelle j'ai mis en place une macro de recherche (jusque là tout fonctionne parfaitement). Je cherche après exécution de cette macro que s'affiche automatique une autre feuille de mon fichier.
    Voici la macro réalisée, mais il y a un bug. Je pense que je n'ai pas bien placé la deuxième action.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sub RechercherContact()
    On Error Resume Next
        'Bloquer l'écran pour executer la macro
            Application.ScreenUpdating = False
        ' Déclaration des variables
            Dim Ligne As Integer
            Dim Nom As String
        'Message box pour demander une action
            Nom = InputBox("Veuillez Saisir le prénom et le nom de l'agent administratif")
         If Nom = "" Then
                MsgBox "Vous n'avez pas saisi le prénom et le nom de l'agent administratif !"
            Exit Sub
        End If
     
        'Recherche le nom de l'agent
            Range("E4") = Nom
        'Effacer les colonnes
            Range("A4:D4,F4:R4") = Empty
        'On commence à la ligne 7 de la colonne Identifiant (jusqu'à) la fin du tableau et on revient à la dernière ligne écrite
            For Ligne = 7 To Range("a999999").End(xlUp).Row
        'Résultat de la recherche par le nom et incrémentation dans la cellule de résultat
            If Range("e" & Ligne) = Range("e4") Then
        'On recherche les informations dans les colonnes et on les incrémente dans la ligne de résultat
                Range("a4") = Range("a" & Ligne)
                Range("b4") = Range("b" & Ligne)
                Range("c4") = Range("c" & Ligne)
                Range("d4") = Range("d" & Ligne)
                Range("f4") = Range("f" & Ligne)
                Range("g4") = Range("g" & Ligne)
                Range("h4") = Range("h" & Ligne)
                Range("i4") = Range("i" & Ligne)
                Range("j4") = Range("j" & Ligne)
                Range("k4") = Range("k" & Ligne)
                Range("l4") = Range("l" & Ligne)
                Range("m4") = Range("m" & Ligne)
                Range("n4") = Range("n" & Ligne)
                Range("o4") = Range("o" & Ligne)
                Range("p4") = Range("p" & Ligne)
                Range("q4") = Range("q" & Ligne)
                Range("R4") = Range("R" & Ligne)
        Exit Sub
            End If
     
    Next Ligne
     
    '
        'Libérer l'écran pour l'utilisateur
            Application.ScreenUpdating = True
     
            'Afficher Fiche d'identité
            Sheets("Fiche d'identité de l'agent").Select
            Range("A1").Select
    End Sub
    Merci pour votre aide et bonne soirée

  2. #2
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Votre analyse est correcte. Le bloc de code d'affichage de la feuille est mal placé.

    Exit Sub commande à la macro d'arrêter d'exécuter le code. Votre code d'affichage de la feuille est situé après. Donc il n'est jamais exécuté.

    Il faut replacer cette portion de code devant le exit Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    'Afficher Fiche d'identité
    Sheets("Fiche d'identité de l'agent").Select
    Range("A1").Select
    
    'Sortir du code
    Exit Sub

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir, deux choses
    Premièrement, au lieu de déplacer le code d'affichage, vous pouvez je pense, remplacer "Exit Sub" par "Exit For" qui se contente de sortir de la boucle et exécute donc la suite de la procédure.
    Deuxièmement, j'opterais plutôt pour le choix du nom et du prénom de l'agent, par un click dans une ListBox 2 colonnes (si le nom et le prénom sont séparés). Cela permettrait d'éviter les erreurs de frappe, d'orthographes etc. Sans compter que si l'utilisateur ne se rappelle pas le nom, descendre la liste l'aidera à le retrouver. Enfin moi ce que j'en dit c'est pour le cas ou cela vous conviendrais?

    Cordialement

  4. #4
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut
    Citation Envoyé par Transitoire Voir le message
    Bonsoir, deux choses
    Premièrement, au lieu de déplacer le code d'affichage, vous pouvez je pense, remplacer "Exit Sub" par "Exit For" qui se contente de sortir de la boucle et exécute donc la suite de la procédure.
    Deuxièmement, j'opterais plutôt pour le choix du nom et du prénom de l'agent, par un click dans une ListBox 2 colonnes (si le nom et le prénom sont séparés). Cela permettrait d'éviter les erreurs de frappe, d'orthographes etc. Sans compter que si l'utilisateur ne se rappelle pas le nom, descendre la liste l'aidera à le retrouver. Enfin moi ce que j'en dit c'est pour le cas ou cela vous conviendrais?

    Cordialement
    Bonsoir,
    Merci pour votre retour
    Dans ma macro, je fais référence à une cellule qui concatène le nom et du prénom de l'agent (c'est ce que j'ai trouvé de plus simple car je ne suis pas expérimenté dans les macros. Je tâtonne, je recherche et je demande de l'aide . J'aime bien votre idée du click dans une ListBox 2 colonnes, sachant que cet outil va servir pour une base de données de plus de 2800 noms. Auriez vous la gentillesse de m'aider à construire le code.
    Je vous remercie par avance

    « La persévérance n’est pas une longue course: c’est plusieurs courses brèves l’une après l’autre. »Walter Elliot

  5. #5
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, il faudrait poster la macro sous balises dièse et si possible les en tète de la base de données. Vu que je n'ai pas de boules de cristal.
    Cordialement

  6. #6
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut
    Citation Envoyé par Transitoire Voir le message
    Bonjour, il faudrait poster la macro sous balises dièse et si possible les en tète de la base de données. Vu que je n'ai pas de boules de cristal.
    Cordialement
    Dans ma macro, je fais référence à une cellule qui concatène le nom et du prénom de l'agent (c'est ce que j'ai trouvé de plus simple car je ne suis pas expérimenté dans les macros. J'aime bien votre idée du click dans une ListBox 2 colonnes, sachant que cet outil va servir pour une base de données de plus de 2800 noms. Auriez vous la gentillesse de m'aider à construire le code. Voici le code intitial

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub RechercherContact()
    On Error Resume Next
        'Bloquer l'écran pour executer la macro
            Application.ScreenUpdating = False
        'Déclaration des variables
            Dim Ligne As Integer
            Dim Nom As String
        'Message box pour demander une action
                Nom = InputBox("Veuillez saisir le prénom et le nom de l'agent administratif")
            If Nom = "" Then
                MsgBox "Vous n'avez pas saisi le prénom et le nom de l'agent administratif !"
            Exit Sub
            End If
        'Recherche le nom de l'agent
            Range("E4") = Nom
        'Effacer les colonnes
            Range("A4:D4,F4:R4") = Empty
        'On commence à la ligne 7 de la colonne ID N° (jusqu'à) la fin du tableau et on revient à la dernière ligne écrite
            For Ligne = 7 To Cells(Rows.Count, "A").End(xlUp).Row
        'Résultat de la recherche par le nom et incrémentation dans la cellule de résultat
            If Range("E4") = Cells(Ligne, "E") Then
        'On recherche les informations dans les colonnes et on les incrémente dans la ligne de résultat
            Range("A4:R4").Value = Range(Cells(Ligne, "A"), Cells(Ligne, "R")).Value
        'Afficher Fiche d'identité
            Sheets("Fiche d'identité de l'agent").Visible = True
            Sheets("Fiche d'identité de l'agent").Select
            Range("B2").Select
                Exit For
            End If
            Next Ligne
        'Libérer l'écran pour l'utilisateur
            Application.ScreenUpdating = True
    End Sub
    Voici pour les titres des entetes de la base de données
    Nom : Image 3.PNG
Affichages : 184
Taille : 7,2 Ko

    Merci pour votre aide

  7. #7
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut
    Citation Envoyé par Alex020181 Voir le message
    Bonjour,

    Votre analyse est correcte. Le bloc de code d'affichage de la feuille est mal placé.

    Exit Sub commande à la macro d'arrêter d'exécuter le code. Votre code d'affichage de la feuille est situé après. Donc il n'est jamais exécuté.

    Il faut replacer cette portion de code devant le exit Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    'Afficher Fiche d'identité
    Sheets("Fiche d'identité de l'agent").Select
    Range("A1").Select
    
    'Sortir du code
    Exit Sub
    Merci pour tout
    Bonne soirée et bon week end

  8. #8
    Membre confirmé
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2016
    Messages : 100
    Par défaut Création d'une boucle
    N/A

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/07/2017, 17h11
  2. [Résolu] Executer une feuille XSLT via VBS
    Par AdD92 dans le forum VBScript
    Réponses: 5
    Dernier message: 03/04/2014, 19h58
  3. [Système] Executer une page PHP d'un autre site
    Par eraim dans le forum Langage
    Réponses: 3
    Dernier message: 05/09/2006, 12h23
  4. Réponses: 1
    Dernier message: 13/06/2006, 17h41
  5. Executer une feuille XSLT sur du xml
    Par naiadeKaren dans le forum Général Python
    Réponses: 2
    Dernier message: 24/08/2005, 14h53

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