Coller une selection si une cellue égale une

Résolu
guillaume660 -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,

Je suis débutant dans la programmation et j'espère qu'il est possible de trouver une solution. J'ai parcouru le forum mais je n'ai pas trouver de réponse.

Je vous explique mon énigme :(tout se passe sur la même feuille) :

Sur la sélection C4:C24 j'ai une série de chiffre avec en C4 le mois.

En dessous j'ai un tableau de C29 à O49 avec sur la ligne C29/N29 tous les mois de l'année.

Je voudrais que lorsque la cellule C4 change (par exemple devient MARS), les éléments qui sont dessous (C5:C24) soient collés en valeur sous le mois qui correspond dans le tableau C29/O49.

Est-ce possible ?

Merci, guillaume.

6 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Y a probablement moyen par formule mais moi c'est en VBA.
    En C4 mettre une liste de validation avec comme source la plage C29:N29
    Pour ne pas avoir d'erreur dans l'écriture du mois.
    Ensuite coller le code ci-dessous dans le module de la feuille.
    Clic droit sur l'onglet de la feuille >> Visualiser le code, dans cette fenêtre..
    Private Sub Worksheet_Change(ByVal Target As Range)  
    Dim Col As Integer  
        If Target.Count > 1 Then Exit Sub  
        If Target = "" Then Exit Sub  
        If Not Intersect(Target, [C4]) Is Nothing Then  
            For Col = 3 To 14  
                If Cells(29, Col) = [C4] Then  
                    Exit For  
                End If  
            Next Col  
             
            Range(Cells(30, Col), Cells(49, Col)).Copy  
            Range("C5").PasteSpecial xlPasteValues  
            Application.CutCopyMode = False  
            Range("C4").Select  
        End If  
    End Sub

    Comme tu parle de "Valeurs je suppose que dans le tableau ce sont des formules ? si non, y a moyen de faire plus cour.
    Et ton tableau, en principe y va de C à N et pas de C à O ?
    Tu dis.
    Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
    0
    1. guillaume660
       
      Bonjour lermite222, et merci de ta réponse rapide et claire !!!

      En fait mon tableau va de C à N (N29 étant Décembre) Je vais supprimer la colonne O.

      Oui en effet les cellules de C5 à C24 sont des formules.

      En revanche j'ai une question bête mais comment utiliser cette macro ? Car j'ai déjà une macro effectuant plusieurs actions et je pensait mettre ton code à la suite.

      En clair je sais utiliser une macro commençant par Sub... que je peux affecter à un bouton. Mais là j'avoue ne pas savoir comment m'y prendre.

      Cordialement
      Guillaume
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Clic droit sur l'onglet de la feuille >> Visualiser le code... Dans la feuille tu colle le code.
    C5 à C29 doivent être vides (pas de formule)

    A+
    0
  3. guillaume660
     
    Merci pour ton aide lermite222, malheureusement ça ne fonctionne pas.

    Les cellules en dessous de C5 sont forcément des formules.

    Merci quand même !
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Là y a quelque chose qui m'échappe... comment veux-tu afficher l'équivalent d'une colonne de ton tableau dans C5:C20 si ce sont des formules ??
    Quel formule dans C5 ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. guillaume660
     
    C'est les données de C5 à C24 que je veux coller sous une des cellules de C29 à N29 :
    "Je voudrais que lorsque la cellule C4 change (par exemple devient MARS), les éléments qui sont dessous (C5:C24) soient collés en valeur sous le mois qui correspond dans le tableau C29/O49."

    Il y a du avoir confusion, désolé si mon message n'était pas compréhensible.
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Non, c'est moi qui ai lu à l'envers.
    En C4 mettre une liste de validation avec comme source la plage C29:N29
    Pour ne pas avoir d'erreur dans l'écriture du mois.
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Col As Integer
        If Target.Count > 1 Then Exit Sub
        If Target = "" Then Exit Sub
        If Not Intersect(Target, [C4]) Is Nothing Then
            For Col = 3 To 14
                If Cells(29, Col) = [C4] Then
                    Exit For
                End If
            Next Col
            Range("C5:C24").Copy
            Cells(30, Col).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
            Range("C4").Select
        End If
    End Sub

    A+
    0