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 :

Assignation d'un même contenu à plusieurs cellules sélectionnées


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut Assignation d'un même contenu à plusieurs cellules sélectionnées
    Bonjour,

    Je souhaite pouvoir insérer le même contenu dans plusieurs cellules préalablement sélectionnées par l'utilisateur. Les mêmes données sont proposées sous forme de listes déroulantes dans des cellules et je voudrais qu'en sélectionnant 3 cellules (par exemple), il soit possible que le choix de l'élément dans la liste déroulante s'applique aux trois cellules sélectionnées. Petit détail (qui peut avoir son importance), le contenu de la cellule est construit par une fonction à partir de l'élément sélectionné dans la liste déroulante.

    Ma procédure initiale, située dans la feuille concernée, est sous la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal target As Range)
     
        Sheets(f_base_donnees_2bis).Unprotect
     
        If Not Intersect(Columns("E"), target) Is Nothing And target.Count = 1 And target.Row > 1 Then
            If target.Offset(0, -3) Like "Menuiserie*" Then
                Call Proposition_multiples(target) ' Permet de construire le contenu
            End If
        End If
     
    [...]
    J'avais compris condition "target.Count = 1" me permettait justement d'éviter que plusieurs cellules soient sélectionnées, mais il n'en est rien. Je rentre dans la condition même lorsque plusieurs cellules sont sélectionnées.

    D'ailleurs, lors de la première ouverture de mon fichier, le code suivant fonctionne. Lorsque je sélectionne plusieurs cellules et que je change la valeur d'une d'entre elle le résultat s'applique à toutes les cellules sélectionnées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If Not Intersect(Columns("E"), target) Is Nothing And target.Count = 1 And target.Row > 1 Then
            If target.Offset(0, -3) Like "Menuiserie*" Then
                Call Proposition_multiples(target)
                Selection.Value = target
            End If
        End If
    Par contre, je ne peux plus utiliser ce code lorsque je change le contenu que d'une seule cellule, car la ligne Application.Undo de ma fonction Proposition_multiples ne fonctionne plus...

    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
    Sub Proposition_multiples(target As Range)
    ' Procédure permettant d'accepter plusieurs choix de listes dans une même cellule, séparés par ", "
     
        Dim valsaisie
        Dim ValSaisie2
        Dim p1 As Integer
        Dim P2 As Integer
     
        Application.EnableEvents = False
        Application.ScreenUpdating = False
     
        valsaisie = target ' copie de la valeur de la nouvelle cellule
        Application.Undo ' retour en arrière : cellule avant changement
     
    [...]
    J'espère avoir exposé suffisamment précisément mon objectif pour que vous puissiez me donner quelques pistes de travail...

    Merci d'avance.

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour flav_cm,

    Tu peux essayer :
    • Target.Cells.Count en remplacement de Target.Count.
    • Sauf erreur de ma part, .Undo ne peux pas fonctionner sur des modifications faites par macro.
    • Je ne sais pas si c'est applicable a ton cas mais si je sélectionne plusieurs cellules, que j'entre une valeur dans la cellule active et que je valide par Ctrl + Enter, toute la sélection prendra cette valeur.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut
    Bonjour antonysansh et merci pour ces premières réponses.

    Citation Envoyé par antonysansh Voir le message
    Target.Cells.Count en remplacement de Target.Count.
    Ne semble pas changer grand chose, je rentre quand même dans la condition. Ce qui est normal car lors de la selection d'un élément dans une liste déroulante, seul le contenu d'une cellule est changé.

    Citation Envoyé par antonysansh Voir le message
    Sauf erreur de ma part, .Undo ne peux pas fonctionner sur des modifications faites par macro.
    Exact mais je fais un .Undo sur la modification faite par l'utilisateur. Et cette partie du code fonctionne très bien si je n'essaye pas de travailler avec plusieurs cellules.

    Citation Envoyé par antonysansh Voir le message
    Je ne sais pas si c'est applicable a ton cas mais si je sélectionne plusieurs cellules, que j'entre une valeur dans la cellule active et que je valide par Ctrl + Enter, toute la sélection prendra cette valeur.
    ça ne semble pas vraiment applicable (?) car je choisis le contenu de la cellule dans une liste déroulante et non par des valeurs saisies au clavier...

Discussions similaires

  1. [VBA] verifier le contenu de plusieurs cellules avant impression
    Par franckla dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/10/2017, 13h24
  2. [XL-2007] Je voudrais sélectionner plusieurs cellules en même temps
    Par ChNoirhomme dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/07/2014, 06h20
  3. [Conception] Plusieurs design pour un même contenu
    Par cocoyot dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 22/11/2007, 14h14
  4. Réponses: 15
    Dernier message: 21/03/2006, 14h10
  5. Sélectionner plusieurs cellules d'un DBGrid
    Par chill667 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/11/2005, 11h43

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