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

  1. #1
    Membre du Club
    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
    Points : 49
    Points
    49
    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 éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 568
    Points : 1 005
    Points
    1 005
    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
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

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

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    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
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  4. #4
    Membre du Club
    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
    Points : 49
    Points
    49
    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

  5. #5
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut Création d'une boucle
    N/A

  6. #6
    Membre du Club
    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
    Points : 49
    Points
    49
    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

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

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    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
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  8. #8
    Membre du Club
    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
    Points : 49
    Points
    49
    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 : 136
Taille : 7,2 Ko

    Merci pour votre aide

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

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Bonjour , Joyeuse Paques confinée à tous
    Je pense que votre colonne concaténée est inutile.
    Par contre, concernant la liste nom et prénom, il ne s'agit pas seulement de faire un bout de code, il faut en premier créer un UserForm pour recevoir la liste voir ci-dessous:
    Nom : Capture d’écran 2020-04-12 à 04.53.40.png
Affichages : 158
Taille : 24,5 Ko
    Lorsque vous appuyez sur un bouton de la feuille, apparait le UserForm avec la double liste. Dans mon exemple, j'ai choisi les mois en lettres et en chiffres pour des raisons de facilité, mais ça ne change rien. Le focus est donc sur le text box, dans lequel vous entrez une lettre en l'occurence le "J". Voir ci-dessous.
    Nom : Capture d’écran 2020-04-12 à 04.54.16.png
Affichages : 146
Taille : 16,4 Ko
    Aussitôt entré le "J", la liste de la ListBox ne contient plus que les Valeurs commençant par J. Soit cela vous convient et vous pouvez choisir dans la liste celui qui convient. S'il y a encore trop de possibles, vous rajoutez le "u" au "j" existant et ainsi de suite.
    Nom : Capture d’écran 2020-04-12 à 04.54.37.png
Affichages : 138
Taille : 15,6 Ko
    Dans mon exemple, vous disposez d'un bouton OK qui valide le choix effectué sur la liste, ou d'un bouton Annuler qui arrête tout.
    Ci-dessous, Tutorom concernant les UserForm
    https://silkyroad.developpez.com/VBA/ControlesUserForm/
    Les modifications des listes étant effectués grâce aux filtres élaborés, Ci-dessous, tutorom concernant les filtres élaborés
    https://philippetulliez.developpez.c...dvancedfilter/
    Cordialement
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

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