Excel - extraire année d'une cellule texte

Résolu
Kirilov Messages postés 108 Statut Membre -  
Kirilov Messages postés 108 Statut Membre -
Bonjour,

Question insoluble pour moi...
Je travaille sur un tableur qui me sert de base pour des légendes d'images. J'ai une colonne (disons « A ») dans laquelle se trouve ma légende et en colonne « B » j'aimerai indiquer l'année.
En clair, j'essaie d'écrire une formule qui dirait Si la cellule A1 contient un nombre entre1900 et 2000 alors écrire ce nombre dans la cellule A2.

Merci de votre aide,
Cordialement,

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    sans maco je ne vois pas
    avec macro à copier dans un module (modifier les constantes)

    Option Explicit 
    
    Const nomF = "Feuil1" 
    Const co As String = "A" 
    Const lideb As Byte = 1 
    
    Sub ExtraitAnnee() 
    Dim a 
    Dim c As String 
    Dim ranga As Long 
    Dim li As Long, lifin As Long 
    ' derniere ligne 
      lifin = Sheets(nomF).Cells(65536, co).End(xlUp).Row 
    ' on y va 
      With Sheets(nomF) 
        For li = lideb To lifin 
          c = .Cells(li, co).Value 
          For ranga = 1 To Len(c) - 3 
            a = Mid(c, ranga, 4) 
            If IsNumeric(a) Then 
              If a >= 1900 And a <= 2000 Then 
                .Cells(li, co).Offset(0, 1).Value = a 
              End If 
            End If 
          Next ranga 
        Next li 
      End With 
    End Sub
    bonne suite
    1
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      salut michel

      j'ai peut être mal lu, mais je pense que la colonne A contient une légende du genre
      Sur la plage 17 avril 1909 à Nice.jpg

      et sans macro, je ne vois pas

      bonne journée
      0
    2. Kirilov Messages postés 108 Statut Membre 1
       
      Oui, c'est à peur près ça : "Paul et Virginie frigorifiés à la plage le 17 octobre 1912 à Nice."
      Je teste les deux solutions dans la journée et vous dis.
      Merci de vos réponses Michel et CCM81.
      0
    3. Kirilov Messages postés 108 Statut Membre 1
       
      La macro marche à merveille ! Merci !
      Une modification serait-il possible (je ne sais pas que ce que dois modifier dans la macro) : mes données sources sont en colonne "D" et j'aimerai que le résultat ne soit pas dans la colonne suivante ("E" donc) mais dans la colonne de mon choix, "H" en l'occurence. C'est possible ? Merci.
      0
    4. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Salut le forum

      Données source en D
      Const co As String = "D"

      Ecriture en H (4 colonnes à droite de D)
      .Cells(li, co).Offset(0, 4).Value = a

      Mytå
      0
    5. Kirilov Messages postés 108 Statut Membre 1
       
      Mytå & CCM81 Merci. Question résolue.
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,
    =Si(ET(A1>=1900;A1<2000);A1;"")
    -1