Coller une selection si une cellue égale une
Résolu
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.
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
-
ContributeurBonjour,
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.-
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
-
-
ContributeurClic 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+ -
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 ! -
ContributeurLà 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 ? -
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. -
ContributeurNon, 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+