Positionnement sur cellule

Bonjour,

je ne parviens pas à faire une macro pour se positionner sur une cellule à partir de deux données renseignées par Inputbox.

Il s'agit de donner le numéro de carte (colonne A) et le numéro de semaine (ligne 2).

Dans le fichier joint Saisie carte N° 10 et semaine 18.

Pourriez-vous me venir en aide

15test.xlsm (214.48 Ko)

Bonjour toutes et tous

un début de réponse pour la colonne A de ta feuille 1 de ton classeur à placer un bouton et mettre dans un module 1 par exemple

avec com:

Option Explicit

Sub numbercarte_Cliquer()
' Bouton n° de carte de la colonne A
' Déclarations des 2 variables Trouve et valeur
Dim Trouve As Double
Dim valeur
' en cas d erreur plouf on sort de la procédure
On Error Goto plouf
' on choisit la feuille du classeur ' Feuil1
With sheets("Feuil1")
' une boîte de dialogue
valeur = InputBox("Donner le N° de carte à chercher", "Rech.Numéro de carte")
Range("A4:A503").Find(valeur, LookIn:=xlValues).Select: 
End With
' on sort si plouf
plouf:Exit Sub
End Sub

sans com:

Option Explicit
Sub numbercarte_Cliquer()
Dim Trouve As Double
Dim valeur
On Error Goto plouf
With sheets("Feuil1")
valeur = InputBox("N° de carte à chercher", "N° de carte")
Range("A4:A503").Find(valeur, LookIn:=xlValues).Select: 
End With
plouf:Exit Sub
End Sub

Warning!! attention à tes cellules fusionnées pour les numéros de semaine Excel n'aime pas trop et déteste cela

Note: J'ai déjà vu un code plus direct est précis mais, je ne trouve plus la page sur le forum

crdlt,

André

Bonjour,

pas de macro dans ton fichier, elles sont restées dans un autre...

    Dim carte As Long, sem As Long, c As Range
    carte = 10: sem = 18
    Set c = Rows(2).Find("S " & sem, , xlValues, xlWhole)
    If c Is Nothing Then
        MsgBox "Semaine non trouvée"
    Else
        Application.Goto Cells(carte + 3, c.Column), True
    End If

eric

Bonjour à tous,

une solution possible qui ne fonctionne que sur la structure du classeur fourni, à adapter :

carte = InputBox("Entrer N° Carte")
semaine = InputBox("Entrer N° Semaine")

Cells(carte + 3, (semaine - 10) * 3 - 2).Select

A+

Merci à AlgoPlus et Eriic

Re Bonjour,

un ENORME merci à vous tous,, je viens d'adapter vos réponses, et cela fonctionne à merveille.

Bonne journée

Salut tout le monde,

j'arrive après la guerre pour... ne rien faire comme les autres...

Tu introduis le n° de carte et le n° de semaine en [A1] séparés par un tiret, sans espace (ex : 10-25)

Tu peux remplacer le n° de semaine en cours par un "0" (zéro).

Aucune protection : je postule que celui qui encode connaît la structure du fichier scanné.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("A1")) Is Nothing Then
    If [A1] <> "" Then
        Cells(3 + Val(Split([A1], "-")(0)), Rows(2).Find( _
            what:="S " & IIf(Split([A1], "-")(1) > 0, Split([A1], "-")(1), Format(Date, "ww", vbMonday, vbFirstFourDays)), _
            lookat:=xlWhole, searchdirection:=xlNext).Column).Select
        [A1] = ""
    End If
End If
'
Application.EnableEvents = True
'
End Sub

A+

3test-2.xlsm (213.84 Ko)

Re,

@ coucou curulis57

j'arrive après la guerre pour... ne rien faire comme les autres...

Bien vu bien pensé et bien codé comme d'hab merci à toi

( je n'aurais jamais pensé et codé comme tu l'as fais à utiliser les Split etc.) ^^

crdlt,

André

Salut Novice,

Salut l'équipe,

Salut André13, merci pour ton appréciation!

Encore plus raide dingue : avec "petites" protections...

Déraisonnable, en une ligne, je sais, mais j'adore ça!!

Info : 0-0 se positionne sur le dernier n° de carte de la semaine courante.

        Cells(IIf(Split([A1], "-")(0) = 0, Range("A" & Rows.Count).End(xlUp).Row, _
            WorksheetFunction.Min(3 + Split([A1], "-")(0), Range("A" & Rows.Count).End(xlUp).Row)), _
            Rows(2).Find(what:="S " & IIf(Split([A1], "-")(1) = 0, Format(Date, "ww", vbMonday, vbFirstFourDays), _
            WorksheetFunction.Min(Split([A1], "-")(1), Format(DateSerial(Year([B1]), 12, 31), "ww", vbMonday, vbFirstFourDays))), _
            lookat:=xlWhole, searchdirection:=xlNext).Column).Select

S'il y a moyen de faire (sûrement) plus dingue, je reviendrai...

Bonne lecture!

A+

4novice38.xlsm (219.60 Ko)
Rechercher des sujets similaires à "positionnement"