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 :

Copier une plage nommé


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Superviseur en transport
    Inscrit en
    Août 2019
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Superviseur en transport
    Secteur : Transports

    Informations forums :
    Inscription : Août 2019
    Messages : 102
    Points : 70
    Points
    70
    Par défaut Copier une plage nommé
    Bonjour, je suis en train de modifier un programme qui assemble les informations d'une semaine de travail. Selon les sélections faites, la feuille doit se remplir tout seul. Tout allait bien lorsque les informations étaient sur une seule ligne par jour. Mais là, une journée peut prendre jusqu'à quatre lignes. Alors, plutôt que de faire une recherche verticale indirecte afin d'aller chercher les informations de chaque journée et de les recopier sur la feuille, je tente d'utiliser une plage préalablement nommé pour la copier sur la feuille de semaine travail. Mon ancien code fonctionnait à merveille, mais le nouveau, lui me donne aucun résultat. Pourriez-vous m'aider à y voir plus claire?

    Encore merci d'avance pour votre aide!

    Ancien code:
    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
    Option Compare Text
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        'Dimanche
            If Target.Count > 1 Then Exit Sub
     
            If Not Intersect(Target, [E7]) Is Nothing Then
               If [E7] <> "" Then
                  [I7].Value = [R7].Value  ' les résultat de la recherche indirect se trouvent dans les cellules des colonnes R à Y sur la ligne 7
                  [J7].Value = [S7].Value
                  [K7].Value = [T7].Value
                  [L7].Value = [U7].Value
                  [M7].Value = [V7].Value
                  [N7].Value = [W7].Value
                  [O7].Value = [X7].Value
                  [P7].Value = [Y7].Value
               Else
     
                  [I7:P7].ClearContents
               End If
            End If
            If Target.Count > 1 Then Exit Sub
    End Sub
    Nouveau code:
    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
    Option Compare Text
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        'Dimanche
            If Target.Count > 1 Then Exit Sub
     
            If Not Intersect(Target, [E7]) Is Nothing Then
               If [E7] <> "" Then
                  Application.Goto Reference:=Sheets("Calcule").Range("U1").Value ' le nom de ma plage nommé ce trouve à la cellule U1 de ma feuille Calcule
                  Selection.Copy
                  Sheets("Journée").Select
                  Range("J" & Rows.Count).End(xlUp).Offset(1, -2).Select
                  ActiveSheet.Paste
               Else
     
                  [I7:P7].ClearContents
               End If
            End If
            If Target.Count > 1 Then Exit Sub
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Miraie Voir le message
    Bonjour,

    A tester :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        'Dimanche
            If Target.Count > 1 Then Exit Sub
     
            If Not Intersect(Target, [E7]) Is Nothing Then
               If [E7] <> "" Then
                  Sheets("Calcule").Range("U1").Copy Destination:=Range("J" & Rows.Count).End(xlUp).Offset(1, -2)
               Else
                  [I7:P7].ClearContents
               End If
            End If
            If Target.Count > 1 Then Exit Sub
    End Sub

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En complément de l'intervention d'Eric, que je salue, je remplacerais les références entre crochets comme [I7: P7] par Range("I7:P7")
    A lire à ce sujet, le billet de Pierre Fauconnier titré VBA-Excel: Notation raccourcie d'une plage, une fausse bonne idée!
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre régulier
    Homme Profil pro
    Superviseur en transport
    Inscrit en
    Août 2019
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Superviseur en transport
    Secteur : Transports

    Informations forums :
    Inscription : Août 2019
    Messages : 102
    Points : 70
    Points
    70
    Par défaut
    Avec la nouvelle formule proposée par Eric KERGRESSE, Ma cellule H6 me retourne la formule =G7&"a" qui affiche a puisqu'il n'y a rien en G7. Je n'y comprends rien. Je vous envoie des captures d'écran afin de vous aider à comprendre.

    voici ma feuille d'entrer de donner qui assemble la feuille de route de mon chauffeur.
    Nom : 1.jpg
Affichages : 131
Taille : 245,3 Ko

    Voici ma cellule U1 de ma feuille Calcule d'où la plage nommée se construit
    Nom : 2.jpg
Affichages : 126
Taille : 14,2 Ko

    Puis la plage Dimanche_2116a qui devrait être copié à la place de " =G7&"a" " que je ne comprends pas d'où il vient.
    Nom : 3.jpg
Affichages : 131
Taille : 89,9 Ko

    Est-ce possible de copier une plage nommée ou je devrait changer de tactique?

    Merci d'avance pour votre aide.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Miraie Voir le message
    Voilà le fichier qui m'a servi pour vous répondre.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/03/2018, 20h40
  2. [XL-2010] Sélectionner une plage nommée pour un copier/coller
    Par hyperion13 dans le forum Excel
    Réponses: 3
    Dernier message: 24/01/2017, 17h56
  3. [XL-2002] copier une plage de données nommées
    Par jmtpat dans le forum Excel
    Réponses: 10
    Dernier message: 05/11/2014, 10h33
  4. [VBA-E] Copier une plage de cellules avec critère
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/06/2006, 16h34
  5. [VBA] Copier une plage de cellules dans un fichier fermé
    Par SFrane dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52

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