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 :

Valider une plage de cellules sur plusieurs feuilles via une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 94
    Points : 41
    Points
    41
    Par défaut Valider une plage de cellules sur plusieurs feuilles via une listbox
    Bonjour à tous,

    Ci-joint le fichier qui est sans doute plus clair que ma question...

    1. Je souhaite valider une plage de cellules sélectionnées (sur les Feuil2 à Feuil4)
    2. Cette plage devra être reportée sur plusieurs feuilles au même endroit. La sélection des feuilles se fait par une listbox (elle est ds le fichier)
    3. Le total des cellules sélectionnées s'inscrit dans la colonne AB sur chaque feuille (normalement ça doit se faire)
    4. Le cumul des totaux par feuille devrait être indiqué sur la Feuil1 colonne C (ça ce n'est pas fait et pense que cette question devrait faire l'objet d'un autre post...)
    *Pour l'instant s'affiche le total des cellules sélectionnées x le nbr de feuilles sélectionnées*
    Je souhaiterai que la sélection soit répercutée sur les feuilles sélectionnées ds ma listbox!!!

    Ci-joint le fichier. J'ai effacé ts mes essais...
    Je n'arrive pas bien à trouver la syntaxe pour transformer mes items de la listbox (feuil1, feuil2...) sélectionnés en feuille

    Merci à vous!

    Lio
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Pas fort clair.. , en lisant entre les lignes..
    La sélection doit comporter des cellules qui sont sur la même lignes ?
    Tu teste si la plage et bien située dans la grille ?

    Tu fais ces test après que le UF a été afficher et une sélection des feuilles faite, ce test devrait être exécuter AVANT d'afficher le UF.
    Tu dis...
    Fichiers attachés Fichiers attachés

  3. #3
    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
    Peut être je me mèle ici:
    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
    Private Sub CommandButton1_Click()
    Dim NbCellule As Single
    Dim Selecsem As Integer
        NbCellule = Selection.Columns.Count * 0.5
        Range(Plage.Address).Interior.ColorIndex = Range("C" & Plage.Row).Interior.ColorIndex  'pour la feuille active
        Range("AB" & Plage.Row).Value = NbCellule + Range("AB" & Plage.Row).Value ''pour la feuille active    
        With ListBox1
            For Selecsem = 0 To .ListCount - 1
                If .Selected(Selecsem) = True Then
                    Sheets(.List(Selecsem)).Select
                    Plage.Copy Range(Plage.Address) ' copy la même plage dans les feuilles selectionnées
                    Range("AB" & Plage.Row).Value = NbCellule + Range("AB" & Plage.Row).Value 'pour la feuille selectionnée
                End If
            Next Selecsem
        End With
    Unload UserForm1
    End Sub
    pour permettre de faire les changements dans la feuille active aussi.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 94
    Points : 41
    Points
    41
    Par défaut résolu
    Merci à LeForestier et à Mercatog..

    Effectivement la syntaxe "Range(Plage.Address)" me manquait. Merci LeForestier.
    J'étais persuadé qu'il fallait quelque chose comme :

    For each item in selection etc...
    en résumé :
    Pour chaque feuille sélectionnée dans la liste :
    - je copie les cellules sélectionnées
    - je copie le nom sélectionné
    - je copie le chiffre (total des cellules sélectionnées) dans la colonne AB

    je me suis aussi trompé sur l'ordre de certaine lignes...

    à l'attention de Mercatog :
    le fait d'avoir mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AB" & Plage.Row).Value = NbCellule + Range("AB" & Plage.Row).Value
    au début et dans with listbox
    cela incrémente 2 fois la feuille (active + sélectionnée ds la listbox).

    Mais c'est vs qui m'avez mis sur l'importance de l'ordre... merci
    bref, cela fonctionne maintenant!


    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
    Private Sub CommandButton1_Click() 'Bouton valider de la listbox
     
    Dim NbCellule As Single
    Dim I As Single
    Dim Selecsem As Integer
    Dim N As String
     
    I = ActiveCell.Row 'I prend la valeur du numéro de ligne où se trouve la cellule active
    N = Range("b" & I).Value 'N prend le contenu de la cellule (B&I) cad le NOM
     
    Set Plage = Selection
     
    NbCellule = Selection.Columns.Count * 0.5 'compte le nombre de cellules et multiplie la nbr de cellules par 0,5
    Range(Plage.Address).Interior.ColorIndex = Range("C" & Plage.Row).Interior.ColorIndex
     
    N = Range("b" & I).Value 'N prend le contenu de la cellule B & I cad le NOM
    With ListBox1
    For Selecsem = 0 To .ListCount - 1 'Sélection des feuilles
     
        If ListBox1.ListIndex = -1 Then Exit Sub 'Si aucune feuille n'est sélectionnée, alors on sort de la userform1
     
            If .Selected(Selecsem) = True Then 'Si il y a une sélection, alors... on continue...!
                Sheets(.List(Selecsem)).Select
                Plage.Copy Range(Plage.Address)
                Range("AB" & Plage.Row).Value = NbCellule + Range("AB" & Plage.Row).Value
                Range("B" & I).Value = N 'copie du NOM
            End If
    Next
    End With
    Unload UserForm1
    End Sub
    Maintenant j'attaque le cumul des résultats..
    - Faire l'addition de tous les résultats (colonne AB) des feuilles sélectionnées
    - Rechercher le NOM ds la Feuil1
    - Inscrire ce résultat ds la Feuil1 enface du bon NOM
    Si quelqu'un sait faire cela sans passer bcp de tps je suis preneur... cela fera ss doute l'objet d'un autre post!

    Merci à tous... Résolu!

  5. #5
    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
    La feuille active n'est pas dans la sélection, et de ce fait le total des cellules sélectionnées ne s'ajoute pas dans la colonne AB de ladite feuille.
    j'ai tort?

    Sauf si tu ne désire pas cet ajout sur la feuille active!

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

Discussions similaires

  1. [XL-2007] Recopier les données d'une cellule sur plusieurs feuilles
    Par anubis62 dans le forum Excel
    Réponses: 1
    Dernier message: 25/06/2009, 09h41
  2. Excel, agrandir une plage de cellules sur la droite.
    Par Ldoppea dans le forum C++Builder
    Réponses: 9
    Dernier message: 12/11/2008, 18h52
  3. faire une copie d'une plage de cellules sur x feuilles
    Par La Zélie dans le forum Excel
    Réponses: 4
    Dernier message: 11/06/2008, 09h55
  4. Vérouillage cellule sur plusieurs feuille
    Par bkdarkness dans le forum Excel
    Réponses: 1
    Dernier message: 22/06/2007, 14h03
  5. [VBA-Excel] - protection plage de cellule sur i feuilles
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/02/2007, 17h52

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