Macro rech même intitulé colonne et copie contenu
Bonjour,
Malgré plusieurs recherches dans différents forums je n'arrive pas a trouver le bon bout de code qui me dépannerait bien.
Je débute en VBA, il faut bien un début a tout et un coup de main serait le bien venu
Je vous explique ce que je veux faire puis je vous met un bout de code que j'ai trouvé et commencé a toucher mais je coince dessus.
J'ai un tableau (ouvrir le fichier joint)où je rentre mes ventes journalières (colonnes EO à ET = lundi mardi etc...).
Une somme est faite dans la colonne EK ==> je change le nom de l'intitulé de la colonne pour chaque nouvelle semaine.
Je veux un code VBA qui en fonction de l'intitulé de la colonne EK va copier/coller les valeurs situées en dessous de l'intitulé (colonne EK) dans une colonne (qui change chaque semaine) qui est située sur le même onglet et qui comporte le même intitulé. (en gros je garde en mémoire mes ventes des semaines précédentes).
Bien entendu mon tableau réel ne comporte pas 10 lignes mais plusieurs centaines et j'ai beaucoup de colonnes.
J'ai mis la configuration exacte de mon vrai tableau avec les intitulé dans les mêmes colonnes.
Voici un bout de code que j'ai trouvé:
Sub Test()
'Macro pour copier les ventes de la semaine et les coller dans la colonne de la semaine correspondante
'Stop rafraichissement écran
Application.ScreenUpdating = False
Dim Plage As Range
Dim Cel As Range
Dim Entete As Integer
'Définir la plage d'entêtes sur la feuille
With Worksheets("Programme Cdt Jour")
Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft))
End With
'recherche l'entête de colonne
Set Cel = Plage.Find(Entete, , xlValues, xlWhole)
'si trouvée, copie
If Not Cel Is Nothing Then
Worksheets("Programme Cdt Jour").Columns(Entete).Copy Cel
End Sub Si quelqu'un a une idée pour m'aider, un grand MERCI !!!
Bonne fin de journée.
Bonjour,
Sub SauvJour()
Dim k%, n%, jour As Range
With ActiveSheet
k = WorksheetFunction.Match(.Range("EK22"), .Rows(22), 0)
n = .Range("EK" & .Rows.Count).End(xlUp).Row - 22
Set jour = .Range("EK23").Resize(n)
.Cells(23, k).Resize(n).Value = jour.Value
End With
End SubJ'ai mis un bouton (qui assure en principe qu'elle soit lancée à partir de la feuille).
Si elle devait être lancée autrement (d'ailleurs), il convient de rremplacer ActiveSheet par Worksheets("NomdelaFeuille").
Comme tu dis n'avoir pas commis le code que tu cites, je ne ferai pas de remarque désagréable à son propos, mais il est à retenir qu'un bon code commence par respecter certaines règles d'écriture : l'indentation (qui permet de le lire en un minimum de temps, retrait de l'alignement principal par rapport à Sub/End Sub et même alignement des début et fin d'instructions telles que With/EndWith, For/Next, If/Else/End If, etc. avec retrait de ce qui figure à l'intérieur de ces instructions) ; autre règle importante : déclarer toutes les variables en tête de la procédure). M'étant dispensé de lire ladite macro, je n'ai pas d'autre critique...
Cordialement.
MFerrand,
Merci pour ton aide je pensais que ton code avait une erreur.
Mais en faite il fonctionne parfaitement a la condition que je n'ai pas mis mis de filtre sur une autre colonne.
En effet, mes articles saisonniers sont masqués avec un filtre.
Je vais donc ajouter a la macro un ouverture des filtres puis un fermeture en fin de macro
==> Pour l'écriture du code merci pour ces petites infos, si j'ai un peu le temps je vais essayer de me mettre un peu plus a l'apprentissage du VBA.
Un Grand Merci.
Stéphane
Si tu risques d'avoir un filtre actif, il faut effectivement soit le supprimer avant (.AutoFilter = False), soit tout afficher (If .FilterMode Then .AutoFilter.ShowAllData).
[Les points initiaux (sans autre mot clé devant) réfèrent à la feuille, mémorisée par le With...]
Oui en effet j'ai mis ça en place.
Mais ça va l'enregistreur de Macro aide bien
Je pense que ta petite aide va en aider plusieurs.
Mais ça va l'enregistreur de Macro aide bien
A condition de le réécrire entièrement (en VBA, je considère que ce qui sort de l'enregistreur ne mérite pas l'appellation de code VBA, c'est juste une transcription de mouvements successifs, lesquels mouvements sont inutiles pour opérer une commande).