Répéter le contenu d'une ligne

Résolu
Bonjour à tous !

J'aurais besoin d'un petit coup de main.
Je souhaiterais répéter le contenu de toute une ligne en fonction de ce que je rentre dans ma première colonne.

Par ex, j'ai une liste de personnes.
Si je tape le nom d'une fille dans la colonne A et que ce nom existe déjà dans mon tableau, j'aimerais que les colonnes B et C reportent automatiquement les infos déja rentrées dans le tableau pour cette fille.

Voilàààà, j'espère être clair !
Merci pour votre aide !

6 réponses

  1. Bonjour,

    Pour ma part, avant de répondre à côté de la plaque je voudrais comprendre et si possible voir ton fichier anonymisé
    ou est ton tableau initial
    et dans la cas d'absence d'un nom que se passe t il

    1) Clic sur ce lien https://www.cjoint.com/
    2) Clic sur le bouton Parcourir pour sélectionner ton fichier
    3) Clic sur le bouton Créer le lien en bas de la page
    4) Au bout de quelques secondes en haut de la page en bleu souligné un lien sera généré, tu le sélectionnes et tu le copies dans une réponse

    A+
    Mike-31

    Pas savoir n'est pas un échec, l'échec est le refus d'apprendre.
    0
    1. Voilà !
      http://www.cjoint.com/c/FImlSsjTRt5

      Les colonnes A et B ne doivent pas être répétées, il faut que si je remets le même prénom en C, les colonnes D et E se complètent automatiquement avec les infos déjà rentrées avant !

      Merci encore !
      0
  2. Bonjour,

    Code à placer dans la module de la feuille concernée :
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim C As Range
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 1 Then
    If Application.CountIf(Columns(1), Target) > 1 Then
    Set C = Columns(1).Find(Target.Value, Range("A" & Rows.Count), xlValues, xlWhole)
    If Not C Is Nothing Then
    C.Offset(, 1).Resize(, 2).Copy Target.Offset(, 1)
    End If
    End If
    End If
    End Sub

    A+
    0
    1. Merci beaucoup, mais malheureusement cela ne fonctionne pas, et je ne maitrise pas suffisamment les macros pour les "bidouiller" pour essayer de le faire fonctionner :/
      0
  3. Re,

    Pour faire ce que tu veux il faut passer par du VBA et d'après ton petit tableau il suffit simplement copier le code de Cyrus que je salue;
    pour cela clic droit sur l'onglet de ta feuille/Visualiser le code et coller le code.

    toutefois remplacer ou modifier cette ligne
    C.Offset(, 1).Resize(, 2).Copy Target.Offset(, 1)
    par
    C.Offset(, 1).Resize(, 4).Copy Target.Offset(, 1)
    0
    1. Resize correspond au nombre de colonnes à reprendre ?
      Pour savoir si jamais mon tableau s'agrandit ou si j'en ai besoin une autre fois ! :)
      0
    2. Malheureusement cela ne fonctionne toujours pas... J'ai vérifié, mes macros sont activées etc mais rien... Une solution ?
      0
  4. Re,

    oui, c'est cela
    C. est la ligne de balayage
    C.Offset(, 1) ou C.Offset(0, 1) 1 est la première cellule à droite de la colonne de balayage
    .Resize(, 4) ou .Resize(0, 4) jusqu' la 4éme cellule à droite de la colonne de balayage ou plus précisément jusqu'à la quatrième cellule à droite, autrement dit copie de la 1ére cellule de la valeur trouvée jusqu'à la 4éme cellule
    C.Offset(0, 1).Resize(0, 4).Copy
    et Target.Offset(, 1) ou Target.Offset(0, 1) en fait colle à partir de la 1ére cellule à droite de la cellule de saisie Target les données trouvées

    https://www.cjoint.com/c/FImmCKuoP5j
    A+
    Mike-31

    Pas savoir n'est pas un échec, l'échec est le refus d'apprendre.
    0
    1. Même lorsque j'utilise le fichier que tu viens de poster cela ne fonctionne pas... Je ne comprends pas pourquoi la macro ne s'exécute pas ?

      Un nouvel ex : http://www.cjoint.com/c/FImmQjNh3u5, avec en rouge les données à reprendre (si ça ne vous dérange pas bien sur !!!)
      0
  5. Re,

    quel est ta colonne critère qui est censée déclenchée le code, j'imagine la C es ce bien cela
    tu saisis exemple Banane et tu veux copier les renseignements de D à J c'est cela

    A+
    Mike-31

    Pas savoir n'est pas un échec, l'échec est le refus d'apprendre.
    0
    1. Re,

      je dois sortir, remplace ou colle ce code dans les propriétés de ta feuille

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim C As Range
      If Target.Count > 1 Then Exit Sub
      If Target.Column = 3 Then
      If Application.CountIf(Columns(3), Target) > 1 Then
      Set C = Columns(3).Find(Target.Value, Range("C" & Rows.Count), xlValues, xlWhole)
      If Not C Is Nothing Then
      C.Offset(, 1).Resize(, 7).Copy Target.Offset(, 1)
      End If
      End If
      End If
      End Sub

      0
      1. Ca maaaarche c'est génial merci beaucoup !!
        0