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 :

Macro exécutée sur 5 feuilles [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut Macro exécutée sur 5 feuilles
    Bonjour tout le monde.

    j'ai un petit souci, je suis débutante en VbA et j'ai besoin de votre aide.
    Mon problème est le suivant:
    j'ai réalisé un macro pour afficher un formulaire et remplir un tableau avec des informations différentes
    Exemple:
    Un tableau pour chaque partenaire ( un tableau par feuille)
    pour 5 partenaires j'ai besoin de faire 5 feuilles.
    Mon code vba fonctionne correctement avec un userfrom mais seulement pour la première feuille.

    sur la feuille j'ai un boutton pour ouvrir le formulaire à l'aide d'un marco.
    le formulaire s'ouvre pour les 5 feuilles "AB", "BC", "CD", "DE", "EF"
    mon problème quand je saisie les informations dans le formulaire et je clique ajouter:
    Pour la feuille 1: le tableau se remplit normalement.
    Pour les autres feuilles : les informations se rajoutent mais pas d'une façon correcte.

    peut être dans Sub AjouterButton_Click() que cette ligne doit être changer mais je sais pas comment pour l'appliquer sur les 5 feuilles


    L = Sheets("AB").Range("a65536").End(xlUp).Row + 1
    J'ai essayé de changer mon code pour que le macro soit appliqué pour toutes les feuilles et ça marche pas

    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
        Private Sub UserForm_Initialize()
            Dim J As Long
            Dim Ws As Worksheet
              partenaireBox.ColumnCount = 1
              partenaireBox.List() = Array("AB", "BC", "CD", "DE", "EF")
              tacheBox.List() = Array("Envoi jeux test (émission) ", "1er retour (émission)", "1er retour analyse  (émission)", "2 eme retour (émission)", "2eme retour analyse (émission)", "3 eme retour (émission)", "3 eme retour analyse (émission)", "restitution facture 32", "restitution en clair", "restitution en Brut", "analyse fichier partenaire", "Analyse Liste recapitulative (émission)", "Analyse Liste recapitulative(réception)", "1er retour (émission)", "1er retour analyse (reception)", "2 eme retour (reception)", "2eme retour analyse (reception)", "3 eme retour (reception)", "3 eme retour analyse (reception)", "4 eme retour (émission)", "4 eme retour analyse (émission)", "archivage", "Autre")
              dateBox.Value = Format(Now, "dd/mm/yyyy")
     
                Set Ws = Sheets("AB")
                With Me.numeroBox
                For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
                   .AddItem Ws.Range("A" & J)
                Next J
               End With
     
     
            dureeBox.Visible = True
            remarqueBox.Visible = True
     
     
        End Sub
    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
        Private Sub AjouterButton_Click()
            Unload Me
            Dim num As Integer, LignVide1 As Integer, dernierID As Integer
             Dim L As Integer
             Dim rien
             Dim Ws As Worksheet
             'Afficher le nouvel ID dans formulaire
             Me.numeroBox = dernierID + 1
            'Recherche de l'ID du dernier client
           dernierID = WorksheetFunction.Max(Range("A:A"))
            LignVide1 = Range("A" & Rows.Count).End(xlUp).Row + 1
     
            'controle saisie des 3 criteres d identification'
            If partenaireBox = rien Then
             MsgBox "Vous devez renseigner un partenaire.", 0, "Information"
             Unload UserForm1
             UserForm1.Show
             ElseIf tacheBox = rien Then
             MsgBox "Vous devez renseigner une tache.", 0, "Information"
             Unload UserForm1
             UserForm1.Show
             ElseIf dureeBox = rien Then
             MsgBox "Vous devez renseigner une durée.", 0, "Information"
             Unload UserForm1
             UserForm1.Show
             ElseIf MsgBox("Confirmez-vous l’insertion de ce nouveau contact ? ", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
     
     
                L = Sheets("AB").Range("a65536").End(xlUp).Row + 1
     
                'Ecrire le nouveau n° dans la feuille Base Clients
               Me.numeroBox = dernierID + 1
                Range("A" & LignVide1) = dernierID + 1
                Range("B" & L).Value = partenaireBox
                Range("C" & L).Value = tacheBox
                Range("D" & L).Value = dateBox
                Range("E" & L).Value = dureeBox
                Range("F" & L).Value = remarqueBox
     
             End If
     
     
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    macro
    Sub Formulaire()
    UserForm1.Show
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Sunshine09 Voir le message
    Pour les autres feuilles : les informations se rajoutent mais pas d'une façon correcte.
    Qu'est-ce qui est incorrect dans la façon qu'ont les informations de se rajouter ?

    J'ai essayé de changer mon code pour que le macro soit appliqué pour toutes les feuilles et ça marche pas
    Qu'est-ce que tu as changé dans ton code ?
    Quel a été l'effet obtenu ?
    Qu'est-ce qui ne convenait pas dans ce que tu as obtenu ?

    peut être dans Sub AjouterButton_Click() que cette ligne doit être changer mais je sais pas comment pour l'appliquer sur les 5 feuilles
    L = Sheets("AB").Range("a65536").End(xlUp).Row + 1
    Je n'ai pas très bien compris ton explication.
    En particulier, je ne comprends pas si tu veux que ta macro place des information dans les 5 feuilles en une seule fois ou si tu veux pouvoir placer ces information dans n'importe laquelle des feuilles que tu aurais choisi.

    On va supposer qu'il s'agit du second cas.

    Comme dans ton code je vois des Range sans référence de Worksheet et sans qu'il y ait de Select ou Activate sur la feuille de calcul, je suppose que tu veux mettre des données dans la feuille active.

    Dans ce cas, peut-être que ton problème pourrait se résoudre simplement en enlevant la référence de feuille dans la ligne de code que tu cites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = Range("a65536").End(xlUp).Row + 1
    Mais il serait plus propre d'écrire, comme tu l'as fait ligne 11 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = Range("A" & Rows.Count).End(xlUp).Row + 1

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Et je pense que tu as inversé ces 2 lignes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             'Afficher le nouvel ID dans formulaire
             Me.numeroBox = dernierID + 1  'va toujours être 1 puisque dernierID = 0 en entrant dans la Sub
            'Recherche de l'ID du dernier client
           dernierID = WorksheetFunction.Max(Range("A:A"))  ' et ici tu cherches le plus grand ID sans l'incrémenter...

  4. #4
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut
    Merciiiii Menhir et parmi.
    La solution de Menhir est juste parfaite problème résolu

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/08/2012, 17h58
  2. une macro travaillant sur plusieurs feuilles, est ce possible?
    Par neoconcept2 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/02/2012, 23h39
  3. [XL-2000] Macro "recherchev" sur plusieurs feuilles
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2010, 15h07
  4. Réponses: 2
    Dernier message: 05/03/2009, 18h43
  5. Macro exécutée sur plusieurs onglets
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2007, 10h59

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