Collage de données vers le bas
Bonjour,
J'ai besoin d'entrer un grand nombre de noms et de notes dans un tableau, mais cela se révèle plus long que prévu !
J'aimerai n'avoir qu'a saisir une seule fois le nom pour la première note et quand je saisirai une nom diffèrent (en B8 ici) est-il possible de coller le nom en B2 jusqu'à B7 ?
En premier lieu est-ce possible ou non ? Si oui comment faire ?
Je vous joint un fichier pour que vous puissiez mieux comprendre.
Autres Explications :
[SAISI] Nom B2; [SAISI] Note C2:C7
[SAISI] Nom B8;
[COLLAGE AUTO] DU NOM EN B2 (de B2 à B7)
Merci d'avance à tous ceux qui prendront le temps de m'aider
En vous souhaitant à tous une bonne journée.
Bonjour,
Vous souhaitez passer par quoi ? Formule ? VBA ?
Pourquoi ne pas faire dans vos cellules B2 à B7 "=B8" ? J'ai l'impression qu'il manque quelque chose dans vos explications et que le jeu de données n'est pas complet. Surtout lorsque vous dites :
J'ai besoin d'entrer un grand nombre de noms et de notes dans un tableau, mais cela se révèle plus long que prévu !
Je tique sur le grand nombre, et ai du mal à me représenter la chose.
Dans l'attente de votre retour, voir d'un second exemple, pour apporter une solution adéquate (mettez un avant/après pour avoir le résultat obtenu).
Cdlt,
Re Bonjour,
Raaaah, ça ne sert à rien de mentir, j'essaye simplement d'expliquer d'une autre manière un précédent problème non résolu.
Ce ne sont pas des noms mais des code de clients. (Je vous laisse voir mes précédents problèmes aux titres similaires si vous souhaitez m'aider et/ou comprendre d'avantage mon problème)
Le principe est le même mais j'ai besoin de passer par du VBA pour coller vers le bas un code client des qu'un code différent apparaît plus bas dans la même colonne.
Je ne sais pas si mon problème est insolvable ou non mais si c'est le cas j'aimerai bien le savoir au lieu de devoir passer par ce genre de procédé mensongé pour avoir une réponse.
Veuillez m'excusez en tout cas d'avoir utilisé ce genre de méthode pour avoir votre attention.
En vous souhaitant une excellente journée.
Bonjour,
J'ai regardé un peu, si tout le monde passe la main c'est peut être que quelque chose ne va pas dans vos explications ou vos réponses. Il est vrai qu'un "ça ne marche pas" ou "ça ne fonctionne pas" à également tendance à m'agacer car c'est à nous de faire le test ET l'investigation. C'est un échange de bons procédés où l'auteur doit apporter un maximum d'éléments et d'analyse afin d'aider le développeur. C'est comme si quelqu'un disait au restaurant "j'aime pas" ou "c'est de la merde", comment peut-il s'améliorer ? C'est quoi que vous n'aimez pas ? Le goût ? Est-il trop amère ? Sucré ? Acide ? La présentation ? La température du plat ? Etc ...
Après ces explications, un test à placer dans le module de la Feuil1 :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(2)) Is Nothing And IsEmpty(Target.Offset(-1)) Then
Application.EnableEvents = False
Target.Offset(, 6) = Date
Range("B" & Target.End(xlUp).Row & ":B" & Target.Offset(-1).Row).FillDown
Application.EnableEvents = True
End If
End SubLors de la saisie d'une valeur en colonne B, les valeurs d'au dessus de la plage B2 à à la ligne d'avant le changement de valeur sont automatiquement recopiées.
Cdlt,
Merci Beaucoup pour votre attention !
Et j'entends bien ce que vous me dites c'est vrai que je ne voyais pas ça de cette manière, merci à vous.
Il fonctionne à merveille ! Il y a juste un léger soucis c'est que cela doit s'appliquer à la colonne A et non B et malheureusement j'ai essayé et le modifié par moi même mais je ne m'y connais pas assez pour simplement modifié cela
Et il se serait également possible de faire cohabiter votre code avec ses lignes ca serait magnifique
Code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing Then
If Target(1) <> "" Then Target(1).Offset(, 6) = Date
End If
If Not Application.Intersect(Target, Columns(9)) Is Nothing Then
If Target(1) <> "" Then Target(1).Offset(, 3) = Date
End If
End SubEncore un grand merci à vous pour l'immense aide que vous m'apportez !
Bonjour,
Je dirais à vu d’œil comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing And IsEmpty(Target.Offset(-1)) Then
Application.EnableEvents = False
Target.Offset(, 6) = Date
Range("A" & Target.End(xlUp).Row & ":A" & Target.Offset(-1).Row).FillDown
Application.EnableEvents = True
End If
If Not Application.Intersect(Target, Columns(9)) Is Nothing Then
If Target(1) <> "" Then Target(1).Offset(, 3) = Date
End If
End SubMais sans vraiment être sûr je vous laisse tester et me faire un retour éventuel sur ce qui ne fonctionne pas et le résultat attendu avec son contexte (manipulation réalisée).
Cdlt,
Ah ! Vous y êtes presque,
J'ai donc appliqué le code puis saisie mes données normalement en A puis une petite liste en B, second saisie plus bas en A et toutes les données ce sont bien collées comme voulu ! Cette partie du code fonctionne donc parfaitement.
Le dernier petit soucis est que comme la date s'applique en G après un saisie en A, la date n'apparait que quand je saisie pour la première fois mes données en A, quand le collage des données se fait la date ne s'affiche pas. Il faut donc si seulement cela est possible remplacer l'apparition de la date en G après un saisie en A par une apparition de la date en G après un saisie en B, car je suis obligé de saisir des données en B.
J'espère être suffisamment claire ?
Par contre la deuxième partie du code qui affiche la date en L après un saisie en colonne I fonctionne parfaitement.
Encore un grand merci !
Bonjour,
Sans date ajoutée quand on saisi en A, mais lorsqu'une saisie dans la colonne B est réalisée alors date du jour en colonne G de la ligne en question :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns(1)) Is Nothing And IsEmpty(Target.Offset(-1)) Then
Application.EnableEvents = False
Range("A" & Target.End(xlUp).Row & ":A" & Target.Offset(-1).Row).FillDown
Application.EnableEvents = True
End If
If Not Application.Intersect(Target, Columns(2)) Is Nothing Then
If Target <> "" Then Target.Offset(, 5) = Date
End If
If Not Application.Intersect(Target, Columns(9)) Is Nothing Then
If Target(1) <> "" Then Target(1).Offset(, 3) = Date
End If
End SubCdlt,
Tout fonctionne parfaitement,
Infiniment merci, je ne sais pas comment vous remercier mais un immense merci pour le temps que vous m'avez accordé !
Passez une excellente journée !