Afficher le dernier nombre sur plusieurs onglets

Bonjour.

J'ai dans un tableau des chiffres qui sont soit présentés sous la forme 123 ou 123 / 456

Sur un onglet suivant j'ai le même tableau avec les chiffres qui doivent se suivre. (un onglet par semaine)

Je désire afficher dans une colonne les 3 derniers chiffres de chaque ligne en sachant que les chiffres de la semaine 02 ne doivent pas être sur l'onglet de la semaine 01. Par contre ceux de l'onglet S02 peuvent être dans l'onglet S05 s'il n'y a pas eu de mouvement dans les onglets entre le S02 et le S05

J'ai joint un exemple de ce que j'ai et ce que je voudrais.

Merci pour votre aide.

Christophe

14test-2.xlsx (13.09 Ko)

Bonjour,

Fonction personnalisée.

Car le mélange de valeurs numériques avec des valeurs texte aurait un peu compliqué avec des formules classiques

et la recherche éventuelle dans les feuilles précédentes aurait beaucoup compliqué.

Fonction très personnalisée, pour diminuer les complications :

  • la semaine est définie par le nom de la feuille, on fait d'une pierre deux coups, surtout quand on doit remonter...
  • Les données occupent toujours les lignes 12 à 15 et les colonnes B à F, ça évite de doubler le volume de code avec des recherches d'emplacements différents sur les feuilles... (Enfin c'est surtout la 12 pour les jours, et pour les autres, elles doivent se correspondre d'une feuille à l'autre, on peut ajouter des lignes si on respecte les correspondances.)
Function DREFJ(Optional js As Integer = 0)
    Dim nf As String, lc%, k%
    Application.Volatile
    nf = Application.ThisCell.Worksheet.Name
    lc = Application.ThisCell.Row
    Do
        With Worksheets(nf)
            For k = 6 To 2 Step -1
                If .Cells(lc, k) <> "" Then
                    If js = 0 Then
                        If IsNumeric(.Cells(lc, k)) Then
                            DREFJ = .Cells(lc, k)
                        Else
                            DREFJ = CInt(Trim(Split(.Cells(lc, k), "/")(1)))
                        End If
                    ElseIf js = 1 Then
                        DREFJ = .Cells(12, k)
                    Else
                        DREFJ = nf
                    End If
                    Exit For
                End If
            Next k
            If k < 2 Then
                nf = Worksheets(nf).Previous.Name
            Else
                Exit Do
            End If
        End With
    Loop
End Function

C'est la même fonction qui fait tout. Sans paramètre, elle renvoie la dernière valeur. Avec le paramètre 1, elle renvoie le jour. Avec 2 elle renvoie la semaine.

Cordialement.

6clegal-test-2.xlsm (25.27 Ko)
Rechercher des sujets similaires à "afficher dernier nombre onglets"