Soucis sur une formule

Bonsoir a tous et toutes, bonsoir forum

Voila j'ai une petite liste déroulante en B3, j'y affiche les années de 2009 à 2015

le but afficher de D3:O3 les mois avec la formule

=NOMPROPRE(TEXTE(DATE($B$3;D3;1);"mmm aa")) 

Qui doit afficher en D3 par Ex: Juin 09

en B3 j'ai essayer plusieurs formats perso et de mème pour D3 MAIS l'affichage ne correspond pas.

toutes sortes Erreur par EX: dec 05 - juin 08 - erreur #nombre! - erreur circulaire etc etc

peut etre une option, j'ai vérifier mais va savoir.

Après de multiples essais ca ne fonctionne toujours pas, quels sont SVP les bons paramètres de formats pour B3 et D3:O3 et si la formule est bonne.

Merci d'avance de votre savoir et bonne soirée a vous

Raymond

Bonjour,

Peut-être avec ceci en D3 :

=NOMPROPRE(TEXTE(DATE($B$3;COLONNE()-3;1);"mmm aa"))

à recopier vers la droite

@+

Bonsoir Thibo, forum

Merci pour la réponse hyper rapide ca fonctionne nickel, comme je le souhaitais

Cependant deux petites questions si possible, et si tu veux bien, ca va de soi.

(1) Cellule B3 au format nombre et D3:O3 est au format perso "mmm aa" BON ou pas SVP

(2) Mettre la premiere lettre de chaque mois en rouge et gras c'est possible de cette manière SVP

en tout cas encore merci a toi c'est gentil et bonne soirée

Raymond

re,

Tes cellules D3:O3 contenant un texte construit avec la fopnction TEXTE, il n'est pas besoin d'appliquer un format personnalisé.

Quant à avoir la 1ère lettre en rouge + gras, ce n'est pas possible par formule. Je sais que c'est faisable en VBA, mais là, je cède ma place à plus compétent dans le domaine.

@+

Bonsoir Raymond, thibo et forum,

Peux-tu joindre un fichier Raymond afin de faciliter la résolution de ton problème?

Re thibo

Merci de nouveau pour ces infos que j'ai noter dans ma doc perso ainsi que le code, je ne savais pas.

bonsoir vba-new

je n'ai pas de fichier a joindre je fais des essais avant pour voir si ca fonctionne correctement et ca me permet d'apprendre tout en construisant ma future compta.

il faut d'abord que je vois si je vais pouvoir aller jusqu'au bout mais je vous rassure ca va bien j'avance vite malgré de nombreux échecs du au fait que j'apprenne seul, heureusement qu'il y a le forum sinon je ne crois pas que j'y arriverai.

Merci a vous deux, c'est très sympa, bonne soirée si tu peux en vba pour la question (2) bien sur SVP je suis preneur.

Bonne soirée et merci

Raymond

Bonsoir,

La solution du point 2/ se trouve dans ce post : https://www.excel-pratique.com/forum/viewtopic.php?t=11770

Merci

Bonsoir readi

Merci pour la réponse donc si je comprends bien, rien ne m'empèche d'utiliser vba avec les formules ok je vais essayer j'espere que ca va pas trop se mélanger.

Mais je pensais, quand vba va passer dans les cellules pour mettre la première lettre en rouge et gras, ca va effacer la formule qui est dans la cellule =NOMPROPRE(TEXTE(DATE( etc etc etc

Bon je verrai demain le soir je ferme a 20h je te dirai au fil d'une prochaine question

Je te souhaite une très bonne soirée

A plus tard sans doute Raymond

re,

Lorsqu'il s'agit d'une formule, cela ne fonctionne et il faut donc passer la formule en VBA.

Tu saisis l'année en B3 et l'affichage des mois s'effectue dans les cellules de D3 à O3.

Je te donne une solution : (code à mettre dans ta feuille)

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lgCol As Long

    ' Saisie de l'année en B3
    If Target.Address = "$B$3" Then
        ' Effacer les cellules des mois/année
        Range("D3:O3").ClearContents

        ' Si l'année est renseignée
        If Target.Value <> "" Then
            ' Boucle pour afficher les mois
            For lgCol = 4 To 15
                With Cells(3, lgCol)
                    ' Afficher le mois/année
                    .Value = Application.WorksheetFunction.Proper(Format(lgCol - 3 & " " & Target.Value, "mmm yy"))

                    ' Effacer le format de la cellule
                    .ClearFormats
                    ' Format texte
                    .NumberFormat = "@"

                    ' Mettre la première lettre en rouge et gras
                    With .Characters(1, 1)
                        .Font.ColorIndex = 3
                        .Font.Bold = True
                    End With
                    ' Mettre les caractères en mode standard
                    With .Characters(2, Len(.Value))
                        .Font.ColorIndex = 0
                        .Font.Bold = False
                    End With
                End With
            Next lgCol
        End If
    End If
End Sub

Bonjour a tous et toutes, bonjour forum,

Bonjour Readi

Tout d'abord merci pour le coup de main, les explications et le code commenter, c'est super, j'ai pris bonne note, ca aide franchement bien, j'apprécie beaucoup.

Bon sinon merci ton code fonctionne très bien.

MAIS j'ai voulu transformer le code en macro et ca marche pas, pourtant je n'ai rien modifier a ton dernier code.

Voila si tu veux bien me faire ca, ca serai gentil a toi.

Merci d'avance et très bonne après midi.

Raymond

3teste-v2.xlsx (14.34 Ko)

Bonjour,

Pourrais-tu joindre ton fichier avec ce que tu as fait ?

Merci

Re readi

Merci mais mème si je voulais je ne pourrai pas d'abord il est conséquent puis il est en plusieurs parties pour le moment.

Je n'ai pas encore regrouper le tout, il me manque encore des informations.

a l'étude sur le papier et tous les bouts de code sont en attente, je l'avais déja fait, mais je débutais et j'ai voulu faire trop vite résultat beug a tous va, la ca marche avec ma nouvelle facon de procéder, j'ai tout refait.

c'est une compta perso de chez perso, mais ca le fait et aussi but apprendre vba.

Voila en tout cas merci bien, c'est dèja gentil, dit moi SVP si je peux faire une macro, sinon je vais revoir ca.

Merci beaucoup Raymond

re,

Tu dis "effectuer ce code en macro".

Qu'est-ce que tu veux dire ?

As-tu l'intention d'utiliser ce code pour d'autres cellules ?

Merci

Re Readi

Non juste l'utiliser pour mon programme de compta dans un premier temps ensuite je dois faire une gestion de schéma sur l'électronique.

Déja régler ca pour la compta mais ca me reservira surement et je l'adapterai s'il le faut je serai plus balèse en vba d'ici la enfin j'espère

Merci bien

Raymond

Tu copies le code que je t'ai donné dans la feuille dans laquelle tu souhaites appliquer cette mise en forme.

A moins que tu aies déjà un code dans la feuille et pour Worksheet_Change. Dans ce cas, il faudrait avoir une visibilité sur ton code.

2zpsforecast10.xlsm (55.49 Ko)

Re Readi

Merci beaucoup pour la réponse,je vais faire comme tu me dit, mais je crains de devoir passer par un appel de macro.

j'ai un code qui comporte Worksheet_Change mais le fichier n'ai pas encore complet

Bon j'y retourne il faut que ca marche

Merci bien et sans doute a plus tard

Raymond

Je viens de créer une procédure à mettre dans un module :

Public Sub FormaterDate(rCell As Range)
    Dim lgCol As Long

    ' Boucle pour afficher les mois
    For lgCol = 1 To 12
        With Worksheets("Feuil1").Cells(3, lgCol + 3)
            ' Effacer le format de la cellule
            .ClearFormats
            ' Format texte
            .NumberFormat = "@"

            ' Afficher le mois/année
            .Value = Application.WorksheetFunction.Proper(Format(lgCol & " " & rCell.Value, "mmm yy"))

            ' Mettre la première lettre en rouge et gras
            With .Characters(1, 1)
                .Font.ColorIndex = 3
                .Font.Bold = True
            End With
            ' Mettre les caractères en mode standard
            With .Characters(2, Len(.Value))
                .Font.ColorIndex = 0
                .Font.Bold = False
            End With
        End With
    Next lgCol
End Sub

Ensuite, dans la feuille, tu rajoutes le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Saisie de l'année en B3
    If Target.Address = "$B$3" Then
        Application.EnableEvents = False

        ' Effacer les cellules des mois/année
        Range("D3:O3").ClearContents

        ' Si l'année est renseignée
        If Target.Value <> "" Then Call FormaterDate(Target)

        Application.EnableEvents = True
    End If
End Sub

Re Readi

Merci, pour le code j'ai essayer ca ne marche pas, et mème pas d'erreur ???, j'ai bien fait attention et suivi a la lettre tes instructions mais rien.

je vais essayer hum hum de refaire une macro comme celle que tu m'a faites pour l'affichage des mois.

te dit encore merci a plus tard

Raymond

re,

Vérifie que la cellule qui déclenche l'affichage des mois est bien la B3 ?

Après tout dépend du code qui se trouve dans ton projet.

Re Readi

Bien vérifier B3 c'est ok,j'ai refait également d'autres essais mais rien

j'ai mis un msgbox "coucou" juste avant l'execution du code ca affiche bien mon message, mais on dirai que ca passe a travers hihihihi ca continue sans se planter

je retourne essayer ton code seul a part on verra bien

a plus tard je bosse dessus encore une petite heure

Raymond

Rechercher des sujets similaires à "soucis formule"