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 :

Retour sur feuille active [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Artisan en retraite
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Artisan en retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 58
    Points
    58
    Par défaut Retour sur feuille active
    Bonjour à tous

    Dans mon classeur j'ai plusieurs feuilles (Lundi, Mardi, Mercredi....), dans chaque feuille j'ai un bouton de commande qui ouvre une macro (Userform) permettant d'ajouter des données dans une autre feuille "Base de donnée".
    A la fin de la macro j'aimerais pouvoir revenir sur la dernière feuille active.
    C'est à dire: Quand j'exécute la macro depuis "Mercredi", j'aimerais revenir sur la feuille "Mercredi" après exécution de la macro et ainsi de suite pour les autres feuilles...
    Je sais revenir sur une feuille bien spécifique avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Lundi").Activate   'Revenir sur la feuille Lundi
    Sheets("Mercredi").Activate     'Revenir sur la feuille Mercredi Etc...
    Mais pas sur la dernière feuille active.
    J'ai pas encore trouvé sur le site.
    Merci de m'aider
    Cordialement

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    C'est parce que tu utilises dans tes codes des Select et Activate dans le code de ton userform.
    Enlève toutes tes Select/Activate de ton code, tu peux gagner du temps, de la stabilité du code et en plus tu ne souciera pas quelle feuille est la feuille active.

    Si tu n'arrive pas, mets ton code (de ton usf)

  3. #3
    Membre du Club
    Homme Profil pro
    Artisan en retraite
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Artisan en retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 58
    Points
    58
    Par défaut
    Bonjour et merci à toi mercatog

    Ici j'ouvre mon Userform avec un bouton de commande sur chaque feuille (Lundi, Mardi....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     '   Saisie d'un Aliment dans la Bd
    Sub Saisie_Aliment()
        Load Ajout_Aliment ' Ouverture de l'Userform
        With Ajout_Aliment
        .Ajout_Alim_Base.Value = ""
        .Ajout_Pts_Base.Value = ""
        .Alim_Satiete.List = Sheets("Listes").Range("A2:A3").Value
        .Alim_Satiete.ListIndex = 0
        .NbPts_Satiete.Value = ""
        End With
        Ajout_Aliment.Show
    End Sub
    Avec le bouton "Ajouter "de l'Userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub BoutonAjoutBase_Click()
     Sheets("Donnees").Range("I2") = False ' Cette cellule doit être sur False au départ
    With Ajout_Aliment
         ' Je donne une valeur aux variables déclarées par "Public"
        AjoutAlimBase = .Ajout_Alim_Base.Value
        AjoutPtsBase = .Ajout_Pts_Base.Value
        AlimSat = .Alim_Satiete.Value
        NbPtsSat = .NbPts_Satiete.Value
        End With
        Unload Ajout_Aliment
        Mise_A_Jour
    End Sub
    Code de la macro "Mise_A_Jour

    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
    '   Mise à jour d'un ajout des données
    Sub Mise_A_Jour()
        Sheets("BD").Activate
        Ajouter_ligne                       'Macro Ajout d'une ligne dans la Bd
        Selection.Value = AjoutAlimBase
        ActiveCell.Offset(0, 1).Select
        Selection.Value = AjoutPtsBase
        ActiveCell.Offset(0, 1).Select
        Selection.Value = AlimSat
        ActiveCell.Offset(0, 1).Select
        Selection.Value = NbPtsSat
        'ActiveCell.Offset(0, 1).Select     'Prévu pour des données à venir
        'ActiveCell.Offset(0, 1).Select     'Prévu pour des données à venir
        Tri_NomBd                           'Macro Tri des données par ordre Alphabétique
        ' C'est ici que je voudrais revenir sur la feuille
        ' depuis laquelle j'ai actionné le bouton de la macro (Lundi, Mardi...)
    End Sub
    Voila, c'est ici que je bloque... A la fin de la macro je reste sur la feuille "Bd"

    Merci de m'aider
    Cordialement
    Magnum 812

  4. #4
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Regarde ici les Activate Select Selection Activecell...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sheets("BD").Activate
    Ajouter_ligne                                    'Macro Ajout d'une ligne dans la Bd
    Selection.Value = AjoutAlimBase
    ActiveCell.Offset(0, 1).Select
    Selection.Value = AjoutPtsBase
    ActiveCell.Offset(0, 1).Select
    Selection.Value = AlimSat
    ActiveCell.Offset(0, 1).Select
    Selection.Value = NbPtsSat
    En plus tu as 2 procédures "boite noire" Ajouter_Ligne et Tri_NomBd que je ne connais pas. mets les.

  5. #5
    Membre du Club
    Homme Profil pro
    Artisan en retraite
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Artisan en retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 58
    Points
    58
    Par défaut
    Il y a surement qqchose que j'ai pas pigé avec les Activate et les Select (je débute!! - "c'est en forgeant qu'on devient....." ) Je ne sais pas comment ajouter des données dans ma Bd sans activer la feuille!!!

    C'est vrai qu'en regardant mes codes y'a bq de Activate, Select et ActivCell... Il faudra que je bosse encore pour y arriver...!

    Je te mets les codes des 2 autres macros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    '   Ajouter une ligne
    Sub Ajouter_ligne()
        Range("A2").Select
        Do Until ActiveCell = ""
            ActiveCell.Offset(1, 0).Select
        Loop
        ActiveCell.EntireRow.Select
        Selection.Insert Shift:=xlBottom
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Trier par Nom
    Sub Tri_NomBd()
        Sheets("BD").Activate
        Range("BdAliments").Select 'La Bd est dans une liste nommée "BdAliments
        Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, _
            Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
        End Sub
    En tout cas si tu peux me donner un coup de pouce et me mettre sur la voie, ça m'aiderait bien.

    Merci à toi mercatog

    Cordialement

  6. #6
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Regarde ceci, j'ai pas ton fichier pour vérifier
    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 Ajouter_Ligne()
    Dim NewLig As Long
     
    With Sheets("BD")
        NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
        .Rows(NewLig).Insert Shift:=xlBottom
    End With
    End Sub
     
    Sub Tri_NomBd()
     
    With Sheets("BD")
        .Range("BdAliments").Sort Key1:=.Range("A3"), Order1:=xlAscending, _
            Header:=xlNo, OrderCustom:=1, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End With
    End Sub
     
    'Mise à jour d'un ajout des données
    Sub Mise_A_Jour()
    Dim NewLig As Long
     
    Application.ScreenUpdating = False
    With Sheets("BD")
        Ajouter_Ligne                                'Macro Ajout d'une ligne dans la Bd
        NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
        .Range("A" & NewLig).Value = AjoutAlimBase
        .Range("B" & NewLig) = AjoutPtsBase
        .Range("C" & NewLig).Value = AlimSat
        .Range("D" & newkig).Value = NbPtsSat
        Tri_NomBd                                    'Macro Tri des données par ordre Alphabétique
    End With
    End Sub
    PS: Pourquoi tu ajoute une ligne vide en dessous de ta zone de donnée dans la feuille BD?

  7. #7
    Membre du Club
    Homme Profil pro
    Artisan en retraite
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Artisan en retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 58
    Points
    58
    Par défaut
    OK, ça fonctionne... je vais étudier ton code de très près.

    A part que dans ma feuille "Bd" les données sont dans une Liste et qu'avec ton code il ajoute des lignes sous ma liste de donnée et non dans la liste... Donc le tri "Tri_NomBd" ne fonctionne pas
    Je vais essayer de piger par moi-même...Si ça ne marche pas je me permettrais de revenir vers toi

    Un grand merci à toi mercatog de m'avoir accordé de ton temps.

    Cordialement

    PS: Concernant ton PS, je mets mes données dans une liste et j'insère une ligne pou ajouter des données, c'est plus facile pour les récupérer dans un autre Userform, j'appelle la liste plutôt que des cellules genre "A3:A100", nombre qui varie suivant le remplissage de la Bd...

  8. #8
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu peux enlever l'ajout de ligne et mettre directement ces 2 codes:
    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
    Sub Tri_NomBd()
    Dim LastLig As Long
     
    With Sheets("BD")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        'Ci après, à la place du X, mets ta dernière colonne
        .Range("A3:X" & LastLig).Sort Key1:=.Range("A3"), Order1:=xlAscending, _
                                     Header:=xlNo, OrderCustom:=1, Orientation:=xlTopToBottom, _
                                     DataOption1:=xlSortNormal
    End With
    End Sub
     
    'Mise à jour d'un ajout des données
    Sub Mise_A_Jour()
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    With Sheets("BD")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range("A" & NewLig).Value = AjoutAlimBase
        .Range("B" & NewLig) = AjoutPtsBase
        .Range("C" & NewLig).Value = AlimSat
        .Range("D" & newkig).Value = NbPtsSat
        Tri_NomBd                                    'Macro Tri des données par ordre Alphabétique
    End With
    Mais bon, à toi de voir.

  9. #9
    Membre du Club
    Homme Profil pro
    Artisan en retraite
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Artisan en retraite
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Tu peux enlever l'ajout de ligne et mettre directement ces 2 codes:
    Dans l'ensemble ça fonctionne (QQ fautes de frappe ds ton code que j'ai corrigé : C'est pour montrer que j'arrive à suivre...!

    Comme je suis dans une liste, je dois forcément insérer une ligne... j'ai encore qq lignes à modifier ds mon code pour l'adapter et ça doit fonctionner.
    Ensuite j'étudie de près ton code.... je vais l'adapter dans un autre Userform.

    Encore un grand merci à toi mercatog et bon après-midi.

    Cordialement

    Magnum812

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

Discussions similaires

  1. [XL-2010] Extraction de données avec Zone de critères et zone d'extraction sur feuille active
    Par keltdojo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/01/2015, 17h26
  2. [XL-2010] Cacher des lignes sur feuilles actives
    Par eric_be dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2014, 20h24
  3. [XL-2010] Macro tri sur feuille active
    Par arthour973 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/03/2013, 15h59
  4. [E-07] TP sur Cellule et feuille active
    Par perchman dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 29/12/2008, 20h35
  5. Un code de retour sur la dernière feuille active
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2008, 17h53

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