Aide sur une macro

Bonjour

Comment puis-je faire pour que la macro de mon fichier alimente la colonne B et non A, je veux garder les données de la colonne A ? Merci à vous

10base-date.xlsm (77.31 Ko)

Bonjour,

Un exemple :

Sub Convertir_mois()
With Worksheets("Base")
    L = 6
    While .Cells(L, 1) <> ""
        .Cells(L, 2) = MonthName(DateTime.Month(.Cells(L, 1)))
        L = L + 1
    Wend
End With
End Sub

Cdlt,

Waouh super, ça fonctionne et je me prends la tête depuis le début de la semaine et en 5 min vous me trouvez la solution, plus qu'à appliquer dans mon fichier de travail - comme la vie est douce avec vous, mille mercis

Mes données se trouvent en colonne E et le mois en F du coup cela va changer la donne ?

Help dans mon fichier cela ne veut pas fonctionner ! vous pouvez me dire en clair la formule magique car suis super nulle

Encore mercis par avance

Bonjour,

Sub Convertir_mois()
With Worksheets("Base") 'Avec la feuille Base
    L = 6 'Défini la première ligne à inclure dans la boucle
    While .Cells(L, 1) <> "" 'Tant que la cellule à l'intersection de la première colonne et la ligne L n'est pas vide
        .Cells(L, 2) = MonthName(DateTime.Month(.Cells(L, 1))) 'La cellule à l'intersection de la deuxième colonne et de la ligne est égale au mois de la cellule à l'intersection de la ligne L et la colonne 1 transformé en valeur textuelle
        L = L + 1 'Passe à la ligne suivante
    Wend 'Poursuite de la boucle
End With
End Sub

Ci-joint le code commenté à adapter.

Cdlt,

Merci je regarde demain matin à la fraîche et je vous tiens au courant, mais vous êtes un as

Encore un énorme merci

Bonjour à tous,

pour répondre en reprenant la macro du classeur :

Sub Convertir_mois()
Dim DerLig As Long, Cel As Range
With Worksheets("Base")
 DerLig = .Range("E" & .Rows.Count).End(xlUp).Row
 'Copier le mois dans les cellules de la colonne F 
 For Each Cel In .Range("E6:E" & DerLig)
    Cel.Offset(0, 1).Value = MonthName(Month(Cel))
 Next
End With
End Sub

A+

Génial et cela fonctionne super bien, puis-je encore abusée ?

Comment transcrire dans ma macro ceci =SI(ESTNA(RECHERCHEV(C6;'H:\TDB\[DB_TABLEAU_BORD_2021.xlsx]1. Tblx suivi visa '!$AF$5:$AF$215;1;0));"";"visa") sur mon fichier et cette formule se trouve en colonne M

Bonne journée

Bonjour,

En reprenant le code proposé par AlgoPlus comme il semble mieux convenir :

Sub Convertir_mois()
Dim DerLig As Long, Cel As Range
Application.Calculation = xlCalculationManual
With Worksheets("Base")
    DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
    For Each Cel In .Range("A6:A" & DerLig)
        Cel.Offset(0, 1).Value = MonthName(Month(Cel))
    Next
    .Cells(6, 13).Formula = "=IF(ISNA(VLOOKUP(C6,'H:\TDB\[DB_TABLEAU_BORD_2021.xlsx]1. Tblx suivi visa '!$AF$5:$AF$215,1,0)),"""",""visa"")"
    .Range(.Cells(6, 13), .Cells(DerLig, 13)).FillDown
End With
Application.Calculation = xlCalculationAutomatic
End Sub

Cdlt,

Merci pour ton aide grandiose

Vous êtes des génies

Bonjour,

Comment ça sans ouvrir le fichier ? Chez moi aucune ouverture de fichier ne se passe, je ne comprend pas. Ici la formule est intégrée dans la cellule comme demandée. Merci de développer.

S'il s'agit d'obtenir un résultat à cette formule sans ouvrir le fichier ce n'est pas possible car vous faites une liaison. Sinon il faut rassembler les 2 fichiers en un seul, ou passer par POWER QUERY ou faire une connexion externe avec import de table, mais là c'est un autre sujet qui dépasse mes compétences.

Cdlt,

Non c'est parfait, j'avais mal copié le lien effectif !

Bonne journée et encore un immense merci

Bonjour,

Merci du retour, me voilà rassuré. Évitez cependant les liens entre fichiers, c'est un conseil pour le futur.

Cdlt,

????????????????????????

heu.... qu'est ce qui se passe ?

Bonjour…

Sans être un génie : on a intérêt à passer par des tableaux structurés proposant de multiples agréments.

Pour en définir un, nommé TB, lancer une fois pour toute, la macro figurant dans la fenêtre des codes de l’onglet contenant la plage (bouton Ct) :

Private Sub Ct_Click()
  Me.ListObjects.Add(1, [A4:M530], , xlYes).Name = "TB"
  Ct.Visible = 0 'caché pour éviter un nouvel appel
End Sub

Pour afficher, dans la colonne 2, le nom du mois de la colonne 1 et la formule en colonne 13, lancer la macro écrite au dessous (bouton CB)

Private Sub Cb_Click()
  [Tb].Columns(1).Copy [Tb].Item(1, 2)
  [Tb].Columns(2).NumberFormat = "mmmm"
  [Tb].Columns(13).Formula.Local = "ta formule" ‘à définir correctement
End Sub

Nota : le nombre important de formules risque de ralentir le travail. Il serait alors intéressant de voir si leur transformation en valeur suffirait - avec l’ajout de la ligne [Tb].Columns(13)= [Tb].Columns(13).Value après celle de l’écriture !

Voir l’exemple de fonctionnement dans le fichier donné.

Ergotamine, salut, j’ai eu un doute sur les formules données donc je laisse le soin à paita de contrôler la sienne et de l’écrire telle quelle dans la macro (grâce au .Local).

[Algoplus, salut, je dirais en plus « heu... Au final, quelle est la formule ? Comment est-elle écrite dans la macro ?»

Bonjour Ordonc,

Au final, quelle est la formule ? Comment est-elle écrite dans la macro ?»

heu... il n'y a pas de formule

MonthName(Month(Cel))

donne le nom du mois du mois de la cellule de la colonne A (cel) que l'on affecte à la cellule une colonne à droite (offset(0,1))

Cel.Offset(0, 1).Value = MonthName(Month(Cel))

et ce pour chaque cellule dans la colonne A

Rechercher des sujets similaires à "aide macro"