Copier des plages de cellules nommées d'une boite de dialogue

Bonjour,

J'ai un classeur

qui me sert à calculer l'itinéraire avec Google Maps entre le domicile d'un adhérent d'une association de randonnée et le départ de la randonnée.

Ce classeur comporte une feuille Calcul des itinéraires et une feuille Circuits qui contient 398 lignes les plages à copier sont nommées :

CHPD02 ; CHPD03 ; CHPD08 ; CHPD09 etc.

Je rajoute un circuit à un adhérent à l'aide de la macro "AjouterCircuits" par l'intermédiaire d'un bouton "Ajouter circuit".

Je souhaiterai si cela est possible, choisir la plage (ex : CHPD24) et la cellule de destination (ex :x N4) à l'aide de listes déroulantes dans une boite de dialogue.

Merci par avance de votre aide.

Jean Marc.

Sub AjouterCircuits()
Sheets("Circuits").Activate
Range("CHPD24").Copy Destination:=Sheets("Calcul").Range("n4")
Sheets("Calcul").Activate
End Sub

Bonjour

Un atout majeur d'Excel c'est les tableaux. Ils permettent beaucoup de choses, notamment les filtres. J'ai apporté quelques modifications à votre classeur voici une proposition sans vba. Une simple liste déroulante dans la cellule code et des rechercheV pour copier les valeurs.

Bonjour yal_excel,

Je vous remercie pour votre réponse, votre solution me convient parfaitement, en revanche si ce n'est pas trop demandé, pourriez-vous me détailler un peu la formule que vous avez utilisé que je ne connais pas.

Merci encore.

Bonne journée.

Jean Marc

Bonsoir yal_excel,

J'ai pu adapter votre solution sur mon fichier de production, même si je n'ai pas compris la présence de l'@ dans la formule.

J'ai un autre souci, j'avais la macro ci-dessous qui sélectionnée tous les circuits attribués en 2017. Avec la formule dans les cellules "Annee_att" cela ne marche plus.

Si vous avez une autre solution, je suis preneur.

Merci.

Bonne soirée

Jean Marc.

Sub SelectCircuits2017()
'UpdatebyExtendoffice20161128
    Dim lastrow As Long
    Dim xRg As Range, yRg As Range
    'change Sheet1 to suit
    With ActiveWorkbook.Worksheets("Calcul")
        lastrow = .Cells(.Rows.Count, "O").End(xlUp).Row
        Application.ScreenUpdating = 2017
        For Each xRg In .Range("O1:O" & lastrow)
            If UCase(xRg.Text) = "2017" Then
                If yRg Is Nothing Then
                    Set yRg = .Range("N" & xRg.Row).Resize(, 10)
                Else
                    Set yRg = Union(yRg, .Range("N" & xRg.Row).Resize(, 10))
                End If
            End If
        Next xRg
        Application.ScreenUpdating = True
    End With

    If Not yRg Is Nothing Then yRg.Select
End Sub

Bonjour Jmarc63

Cela est vient de ce que j'ai changé l'ordre des colonnes. Il suffit de remplacer "O" par "P" dans votre macro pour que tout rentre dans l'ordre.

Une autre manière de faire qui s'affranchie de ce genre de problème c'est d'utiliser le nom des colonnes. Un des multiples avantages des tableaux dans excel

Sub SelectCircuits2017_2() dans Module1

Sub SelectCircuits2017_2()
    Dim xRg As Range, yRg As Range

    Sheets("Calcul").Activate
        Application.ScreenUpdating = 2017
        For Each xRg In Range("tb_calculs[Annee_attribution]")
            If xRg.Value2 = "2017" Then
                If yRg Is Nothing Then
                    Set yRg = xRg.Resize(, 10)
                Else
                    Set yRg = Union(yRg, xRg.Resize(, 10))
                End If
            End If
        Next xRg
        Application.ScreenUpdating = True

    If Not yRg Is Nothing Then yRg.Select
End Sub

Je me demande à quoi sert cette sélection?

Pour l'@ ça signifie qu'on cherche sur la même ligne

Bonsoir yal_excel,

Merci pour toutes ces précisions, effectivement en remplaçant O par P ça va bien, j'aurai dû le voir !

Pour l'@ ça signifie qu'on cherche sur la même ligne

Il faudra que je lise mieux la documentation.

Je me demande à quoi sert cette sélection ?

Dans notre association les adhérents doivent garder un circuit à baliser au maximum 5 ans, donc rendre pour l'année 2022 les circuits attribués en 2017.

Une autre manière de faire qui s'affranchie de ce genre de problème c'est d'utiliser le nom des colonnes. Un des multiples avantages des tableaux dans excel

Jusqu'à ce jour je n'ai pas beaucoup utilisé les tableaux Excel, c'est l'occasion de mis mettre.

Encore merci, mon problème est résolu.

Bonne journée.

Jean Marc

Content de t'avoir rendu service.

Pour la sélection, dans l'entête du tableau tu as des petites flèches qui te permettent de faire des tris et des sélections

Bonsoir,

Effectivement ta solution de filtrage est parfaite, je me suis bien cassé la tête pour rien avec mes macros.

Enfin pourquoi faire simple quand on peut faire compliqué !

Bonne soirée

Dans excel les tableaux structurés c'est magique. Ce n'est peut être pas pour rien que ça s'appelle un tableur.

Si le problème est résolu ne pas oublier de le marquer comme tel

Rechercher des sujets similaires à "copier plages nommees boite dialogue"