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 :

VBA : Copies plusieurs Cellules [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut VBA : Copies plusieurs Cellules
    Bonjour,
    J'ai un tableau avec des adresses mails dans la colonne A (données verrouillées)
    J'utilise une macro pour copier une adresse mail.

    Par exemple, pour copier adresse mail en A1 je clique sur B1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveCell.Offset(0, -1).Copy
    End Sub
    Je souhaiterais pouvoir cliquer sur plusieurs cases afin de sélectionner plusieurs adresses mails de la liste espacées chacune d'un point-virgule (liste de diffusion personnalisée)
    Comment modifier ma macro en ce sens ?

    Merci pour vos retour

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Aide
    Bonjour

    je propose de mettre des X dans une autre colonne et d'appliquer quelque chose du genre

    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
    Sub Bouton2_Cliquer()
    Dim mail As String
     
    Dim rng As Range: Set rng = Application.Range("Feuil3!A2:A5")
    Dim i As Integer
    For i = 2 To rng.Rows.Count + 1 'le +1 est là car A1 non présent dans rng
     
    If Range("B" & i).Value = "X" Then
        If i = 2 Then
        mail = Range("A" & i).Value
        Else
        mail = mail & " ; " & Range("A" & i).Value
        End If
    End If
     
    Next
     
    Range("B1").Value = mail
     
    End Sub
    La ligne Set rng = Application.Range("Feuil3!A2:A5") est évidemment à adapter

    Peut être quelqu'un d'autre pourra donner une solution sans mettre des x ailleurs

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 124
    Par défaut
    Salut

    Je peux proposer un truc comme ça, même si personnellement, je ne trouve pas ça très "propre"

    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
    Option Explicit
     
    Private strListeDiffusion As String
     
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        'On vérifie que l'on se trouve dans la bonne colonne (peut-être amélioré si tu utilises un tableau structuré, en utilisant Intersect)
        If Target.Column = 1 Then
            'On vérifie que la cellule contient une adresse mail (la vérif peut-être améliorée...)
            If InStr(1, Target.Value, "@") <> 0 Then
                'On annule l'apparition du menu flottant
                Cancel = True
                'On vérifie que l'adresse n'est pas déjà dans la liste de diffusion
                If InStr(1, ";" & strListeDiffusion & ";", ";" & Target.Value & ";") = 0 Then
                    'On regarde si un ";" doit être ajouté à la liste
                    If strListeDiffusion <> "" Then strListeDiffusion = strListeDiffusion & ";"
                    'On ajoute l'adresse mail à la liste de diffusion
                    strListeDiffusion = strListeDiffusion & Target.Value
                    'Option
                    'On affiche la liste de diffusion dans une cellule
                    Me.Range("A1").Value = strListeDiffusion
                End If
            End If
        End If
     
    End Sub
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Target.Column = 1 Then
            'On annule le double-click
            Cancel = True
            'On efface la liste de diffusion
            strListeDiffusion = ""
            'Option
            'On affiche la liste de diffusion dans une cellule
            Me.Range("A1").Value = strListeDiffusion
        End If
    End Sub
    Un clique droit sur l'adresse l'ajoute à la liste, un double clique vide la liste.
    Tu récupères ensuite ta liste de diffusion dans la variable strListDiffusion pour faire ton mail et tu vide la variable (ainsi que la cellule A1 si tu as gardé l'option )

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut
    Hello,

    Désolé pour cette réponse et ses remerciements tardifs à Fab et Qwaz pour leur proposition.
    J'ai adopté celle de Qwaz dans le classeur "tab1" et cela fonctionne parfaitement.

    Bon, je vais faire mon difficile...
    En fait, les adresses mails copiées sont sur deux colonnes et protégées pour que les utilisateurs ne fassent pas de bévues.
    J'ai donc utilisé les colonnes adjacentes pour qu'ils puissent sélectionner les adresses. (classeur "tab2").

    Mais je n'arrive pas à adapter ta macro pour que cela fonctionne.

    Un dernier petit coup de main ?

    Merci encore pour tout le temps passé sur ce forum et pour vos réponses.

    Muzard
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 124
    Par défaut
    Salut

    Tu peux essayer comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        'On vérifie que l'on se trouve dans la bonne colonne (peut-être amélioré si tu utilises un tableau structuré, en utilisant Intersect)
        If Target.Column = 2 Or Target.Column = 4 Then
            'On vérifie que la cellule contient une adresse mail (la vérif peut-être améliorée...)
            If InStr(1, Target.Offset(0, -1).Value, "@") <> 0 Then
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut
    Super
    Après quelques tâtonnements, ça marche nickel ! Un grand grand merci Qwaz

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

Discussions similaires

  1. Vérification code VBA (recopie plusieurs cellules)
    Par dgeo10 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/03/2018, 13h14
  2. Réponses: 11
    Dernier message: 12/09/2014, 15h02
  3. VBA Copier plusieurs cellules dans uen autre feuille
    Par Tm7555555 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2013, 19h25
  4. code VBA copie colle cellule d'1 fichier excel à 1autre
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 03/06/2009, 18h47
  5. [XL-2003] Macro VBA copie valeur cellule excel et colle dans doc word
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 54
    Dernier message: 03/06/2009, 09h21

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