Coller automatiquement une valeur d'une cellule... Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Tonthon
Membre dévoué
Membre dévoué
Messages : 702
Appréciations reçues : 2
Inscrit le : 22 janvier 2010
Version d'Excel : 2010 FR

Message par Tonthon » 10 décembre 2018, 16:03

Bonjour,

Je cherche à copier une cellule quelconque (dans une zone déterminée) pour la coller dans un emplacement précis qui évolue....

Le tableur joint explique cela plus clairement (je l'espère du moins)

J'ai créé une macro mais qui est à modifier ....

En espérant que c'est réalisable.
Report automatique v02.xlsm
(18.85 Kio) Téléchargé 12 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 4'841
Appréciations reçues : 235
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 10 décembre 2018, 16:42

Bonjour,

copier la macro suivante sur la page code de la feuille,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("M13:S22"))
If Not isect Is Nothing Then Range("D" & Cells(Rows.Count, "D").End(xlUp).Row + 1) = Target.Value
End Sub
Une pensée partagée
Lorsque tu omets de marquer la question initiale comme étant résolu, tu prives les participants du forum d’une solution possible pour eux.
Merci! de faire un clic sur le bouton résolu pour nous aider à t'aider.
isabelle
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 3'516
Appréciations reçues : 242
Inscrit le : 26 janvier 2011
Version d'Excel : 2007

Message par Theze » 10 décembre 2018, 16:49

Bonjour,

A mettre dans le module de la feuille, à chaque sélection de cellule dans la plage M13:S22, la valeur sera entrée à la suite des autres de la gauche vers la droite et de haut en bas :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Cel As Range

    If Intersect(Target, Range("M13:S22")) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub

    For Each Cel In Range("D5:F30")

        If Cel.Value = "" Then Cel.Value = Target.Value: Exit For

    Next Cel

End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
T
Tonthon
Membre dévoué
Membre dévoué
Messages : 702
Appréciations reçues : 2
Inscrit le : 22 janvier 2010
Version d'Excel : 2010 FR

Message par Tonthon » 10 décembre 2018, 16:57

i20100 a écrit :
10 décembre 2018, 16:42
Bonjour,
copier la macro suivante sur la page code de la feuille,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("M13:S22"))
If Not isect Is Nothing Then Range("D" & Cells(Rows.Count, "D").End(xlUp).Row + 1) = Target.Value
End Sub
Merci pour ta proposition que je viens d'essayer.... malheureusement il y a un souci car cela ne fonctionne pas.
T
Tonthon
Membre dévoué
Membre dévoué
Messages : 702
Appréciations reçues : 2
Inscrit le : 22 janvier 2010
Version d'Excel : 2010 FR

Message par Tonthon » 10 décembre 2018, 17:17

Theze a écrit :
10 décembre 2018, 16:49
Bonjour,
A mettre dans le module de la feuille, à chaque sélection de cellule dans la plage M13:S22, la valeur sera entrée à la suite des autres de la gauche vers la droite et de haut en bas :
...
Re,

C'est extraordinaire ce que l'on peut faire avec Excel : :appl2: (10/10)
Cela va même au-delà de mes espérances.

Il y a juste un tout petit truc qui consisterait à "autoriser" le collage du même dernier nombre sur une ligne en début d'une nouvelle ligne.

Ce tableur va recueillir les votes d'un club photo = chaque ligne les votes d'un adhérent (donc pas de doublon) mais sur la ligne suivante, on peut retrouver la photo citée en dernier...

Je joins le tableur qui montre bien cela
Report automatique avec code v02.xlsm
(21.5 Kio) Téléchargé 4 fois
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 3'516
Appréciations reçues : 242
Inscrit le : 26 janvier 2011
Version d'Excel : 2007

Message par Theze » 10 décembre 2018, 17:24

Il y a juste un tout petit truc qui consisterait à "autoriser" le collage du même dernier nombre sur une ligne en début d'une nouvelle ligne.
Je ne comprend pas trop ce que tu veux :oops:
Tu ne veux pas que sur une même ligne deux valeurs identiques puissent s'y trouver mais qu'elles puissent se suivre si sur deux lignes différentes ?
Dans le cas où ces deux valeurs se trouvent sur la même ligne peuvent elles coexister si une valeur différente les sépare ?
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
T
Tonthon
Membre dévoué
Membre dévoué
Messages : 702
Appréciations reçues : 2
Inscrit le : 22 janvier 2010
Version d'Excel : 2010 FR

Message par Tonthon » 10 décembre 2018, 17:35

Désolé si je n'ai pas été clair.

- Tu ne veux pas que sur une même ligne deux valeurs identiques puissent s'y trouver mais qu'elles puissent se suivre si sur deux lignes différentes ?
En pratique, cela ne devrait pas arriver puisqu'un adhérent vote pour des photos différentes et qu'il y a une ligne par adhérent mais c'est un verrou ou alerte possible

- Dans le cas où ces deux valeurs se trouvent sur la même ligne peuvent elles coexister si une valeur différente les sépare ?
Ce qui correspond à la sécurisation d'un ligne

==> mon propos à partir d'un exemple concret.... la dernière photo choisie par un adhérent est la 22
et la première photo de l'adhérent suivant est la 22
En l'état cela bloque et c'est dommage. :oops:
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 3'516
Appréciations reçues : 242
Inscrit le : 26 janvier 2011
Version d'Excel : 2007

Message par Theze » 10 décembre 2018, 17:56

En l'état cela bloque et c'est dommage
ceci est dû au fait que la cellule reste sélectionnée donc, si chaque adhérent doit noté 3 photos, il suffit une fois arrivé en bout de ligne de sélectionner une cellule en dehors de la grille ce qui fait que quand l'adhérent suivant effectue sont choix, il va devoir obligatoirement sélectionner dans la grille :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Cel As Range
    Dim I As Integer
    
    If Intersect(Target, Range("M13:S22")) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub

    For Each Cel In Range("D5:F30")

        If Cel.Value = "" Then
            
            For I = 4 To Cel.Column
            
                'si la photo a déjà été choisie, message et fin
                If Cells(Cel.Row, I).Value = Target.Value Then MsgBox "Vous avez déjà choisi cette photo !", vbInformation: Exit Sub
                
            Next I
            Cel.Value = Target.Value
            
            'si les trois choix ont été fait, sélectionne la cellule M12
            If Cel.Column = 6 Then Range("M12").Select
            Exit For
                
            End If
        
    Next Cel
    
End Sub
J'ai intégré un contrôle afin d'éviter le choix de la même photo sur la même ligne. Il te faut déverrouiller la cellule M12 afin qu'elle soit sélectionnable par le code une fois les trois choix réalisé par l'adhérent. Tu peux en coisir une autre si tu veux, c'est pour cette raison que j'ai utilisé Range() plutôt que Cells() (plus facile pour celui qui n'est pas trop habitué)
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
T
Tonthon
Membre dévoué
Membre dévoué
Messages : 702
Appréciations reçues : 2
Inscrit le : 22 janvier 2010
Version d'Excel : 2010 FR

Message par Tonthon » 10 décembre 2018, 18:46

Re

Je viens de tester vite fait ton dernier code = c'est NICKEL-CHROME ! :clap: :appl: :appl2:

J'ai essayé de créer ou de trouver un blocage.... sans succès et ton affichage est très parlant = excellente idée.

Il ne me reste plus qu'à dire :thx:

et excellente soirée.

Tonthon
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 3'516
Appréciations reçues : 242
Inscrit le : 26 janvier 2011
Version d'Excel : 2007

Message par Theze » 10 décembre 2018, 21:00

Content d'avoir pu t'aider :wink:
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message