Toutes les Années entre deux Années

Bonjour à Tous !!

Je n'ai pas réussi à trouver la réponse, c'est pour cela que je vous demande de l'aide...

J'aimerais que dans mon fichier excel, lorsque je mets dans la cellule F2 " 1934-2018" qu' excel me note dans la cellule G2 toutes les années entre 1934 et 2018 et si possible seéparé par ";" soit "1934;1935;1936;1937;1938;... etc".

Mais dans les cellules de la colonne F:F il peut y avoir aussi d'autre exemple: "2011-2016" "2009-2015"

Merci d'avance pour voter aide

Salut MM34,

quelque chose comme ça?

Code à coller dans le module de la feuille concernée.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sData$
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("F:F")) Is Nothing Then
    If InStr(Target, "-") > 0 Then
        For x = Split(Target, "-")(0) To Split(Target, "-")(1)
            sData = sData & IIf(sData = "", x, ";" & x)
        Next
    End If
    Range("G" & Target.Row).Value = IIf(sData = "", Target, sData)
    Columns(7).AutoFit
End If
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub

A+

Bonjour curulis57

Merci pour votre réponse rapide .

J'ai coller le code dans le module de la feuille mais cela ne semble pas fonctionner .

ci joint le fichier

Merci

26test-annees.zip (68.85 Ko)

Salut MM34,

  • le Module1 n'est pas le module VBA de 'Caractéristiques....' !!! ;
  • un fichier comportant des macros doit s'enregistrer en tant que "XLSM" : Type : Classeur Excel prenant en charge les macros.

A+

30test-annees.xlsm (86.21 Ko)

Un Grand Merci curulis57 !!!

Ca fonctionne !!!

Merci

curulis57,

J'ai un petit souci, lorsque que je fais une faute de frappe exemple "2014-", j'ai ce message d'erreur "erreur d'éxecutuion'13'

et ensuite le code ne fonctionne plus et je suis obligé de fermer excel et reouvrir pour cela refonctionne.

Aurait-il une autre solution ?

Merci

Salut MM34,

blindons quelque peu... sinon, soigner ses spasmes...

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sData$
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("F:F")) Is Nothing Then
    If InStr(Target, "-") > 0 Then
        If IsNumeric(Split(Target, "-")(0)) And IsNumeric(Split(Target, "-")(1)) And _
            Val(Split(Target, "-")(0)) > 0 And Val(Split(Target, "-")(1)) > 0 And _
            Val(Split(Target, "-")(1)) > Val(Split(Target, "-")(0)) Then
                For x = Split(Target, "-")(0) To Split(Target, "-")(1)
                    sData = sData & IIf(sData = "", x, ";" & x)
                Next
        End If
    End If
    Range("G" & Target.Row).Value = IIf(sData = "", IIf(IsNumeric(Target), Replace(Target, "-", ""), ""), sData)
    If Range("G" & Target.Row).Value = "" Then
        Target = ""
        Target.Select
    End If
    Columns(7).AutoFit
End If
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub

A+

curulis57,

sinon, soigner ses spasmes...

Un grand grand merci pour votre éfficacité !!!

Cela fonctionne parfaitement .

Rechercher des sujets similaires à "toutes annees entre deux"