Incrémentation numérique automatique avec F9

Bonjour !

Tout est dans le titre, passons à un exemple pour être plus compréhensible.

J'aurai voulu que mes nombres s'incrémente à chaque fois que je clic sur la touche F9 mais en restant dans un cycle.

C'est à dire A qui se trouve en "A2" est à 1 et n qui se trouve en "N2" est à 14, je clic sur F9, A passe à 14. Tandit que B qui est en "B2" passe à 1 et N passe à 13.

Serte je pourrai faire un grand tableau et décaler à chaque fois mais ce n'est pas mon but. ^^

Merci pour votre aide.

4classeur1.xlsx (8.06 Ko)

Bonjour,

Pas sûr d'avoir tout compris ?

Sub ToucheF12()

    'affecte la touche F12 à la procédure Test
    'à n'exécuter qu'une fois, à mettre peut être dans la procédure événementielle "Workbook_Open()" ?
    Application.OnKey "{F12}", "Test"

End Sub

Sub Test()

    Range("A1").Value = Range("N1").Value
    Range("N1").Value = Range("N1").Value - 1
    Range("B1").Value = Range("B1").Value + 1

End Sub

ça ne fonctionne pas

Je recommence mon exemple.

En "A1" j'ai 1

En "B1" j'ai 2

En "C1" j'ai 3

Dès que j'appui sur ma touche F9 je souhaite que

A1 passe à 3

B1 passe à 1

C1 passe à 2

Je reclic sur F9

A1 passe alors à 2

B1 passe alors à 3

C1 passe alors à 1

Si je reclic ça revient à la premier configuration c'est un cycle.

(Du genre la fonction ALEABORNE mais qui n'est plus aléatoire mais cyclé).

3classeur2.xlsx (8.96 Ko)

Re,

A tester :

Sub Test()

    Dim ValA As Integer
    Dim ValB As Integer
    Dim ValC As Integer

    ValA = Range("A1").Value
    ValB = Range("B1").Value
    ValC = Range("C1").Value

    Range("A1").Value = ValC
    Range("B1").Value = ValA
    Range("C1").Value = ValB

End Sub

Ca fonctionne et si maintenant je souhaite utiliser cette macro jusqu'à par exemple N1 J'ai fait:

Sub Bouton1_Cliquer()

    Dim ValA As Integer
    Dim ValB As Integer
    Dim ValC As Integer
    Dim ValD As Integer
    Dim ValE As Integer
    Dim ValF As Integer
    Dim ValG As Integer
    Dim ValH As Integer
    Dim ValI As Integer
    Dim ValJ As Integer
    Dim ValK As Integer
    Dim ValL As Integer
    Dim ValM As Integer
    Dim ValN As Integer

    ValA = Range("A1").Value
    ValB = Range("B1").Value
    ValC = Range("C1").Value
    ValD = Range("A1").Value
    ValE = Range("B1").Value
    ValF = Range("C1").Value
    ValG = Range("A1").Value
    ValH = Range("B1").Value
    ValI = Range("C1").Value
    ValJ = Range("A1").Value
    ValK = Range("B1").Value
    ValL = Range("C1").Value
    ValM = Range("B1").Value
    ValN = Range("C1").Value

    Range("A1").Value = ValN
    Range("B1").Value = ValA
    Range("C1").Value = ValB
    Range("D1").Value = ValC
    Range("E1").Value = ValD
    Range("F1").Value = ValE
    Range("G1").Value = ValF
    Range("H1").Value = ValG
    Range("I1").Value = ValH
    Range("J1").Value = ValI
    Range("K1").Value = ValJ
    Range("L1").Value = ValK
    Range("M1").Value = ValL
    Range("N1").Value = ValM

End Sub

Mais ça ne marche pas il me met 1 / 2 / 3 partout il ne fait pas jusqu'à 14

Re,

Sub Bouton1_Cliquer()

    Dim ValA As Integer
    Dim ValB As Integer
    Dim ValC As Integer
    Dim ValD As Integer
    Dim ValE As Integer
    Dim ValF As Integer
    Dim ValG As Integer
    Dim ValH As Integer
    Dim ValI As Integer
    Dim ValJ As Integer
    Dim ValK As Integer
    Dim ValL As Integer
    Dim ValM As Integer
    Dim ValN As Integer

    ValA = Range("A1").Value
    ValB = Range("B1").Value
    ValC = Range("C1").Value
    ValD = Range("D1").Value
    ValE = Range("E1").Value
    ValF = Range("F1").Value
    ValG = Range("G1").Value
    ValH = Range("H1").Value
    ValI = Range("I1").Value
    ValJ = Range("J1").Value
    ValK = Range("K1").Value
    ValL = Range("L1").Value
    ValM = Range("M1").Value
    ValN = Range("N1").Value

    Range("A1").Value = ValN
    Range("B1").Value = ValA
    Range("C1").Value = ValB
    Range("D1").Value = ValC
    Range("E1").Value = ValD
    Range("F1").Value = ValE
    Range("G1").Value = ValF
    Range("H1").Value = ValG
    Range("I1").Value = ValH
    Range("J1").Value = ValI
    Range("K1").Value = ValJ
    Range("L1").Value = ValK
    Range("M1").Value = ValL
    Range("N1").Value = ValM

End Sub

Super ça fonctionne au top !!

Merci beaucoup, je n'ai plus qu'à me pencher sur le VBA pour le comprend et l'apprendre.

Merci !

Re,

Donc si c'est le résultat voulu, on peut passer par un tableau afin de réduire le nombre de ligne. Le code devient :

Sub Bouton1_Cliquer()

    Dim Tbl(1 To 14) As Integer
    Dim I As Integer

    For I = 1 To 14: Tbl(I) = Cells(1, I).Value: Next I

    Cells(1, 1).Value = Tbl(14)

    For I = 1 To 13: Cells(1, I + 1).Value = Tbl(I): Next I

End Sub

Ça fonctionne super bien aussi mais là :/

Catastrophe je ne la comprend pas pourtant c'est effectivement plus rapide.

L'autre j'ai pu m'amuser déjà a la transformer comme je veux même en vertical

Sub Bouton2_Cliquer()

    Dim Val6 As Integer
    Dim Val7 As Integer
    Dim Val9 As Integer
    Dim Val10 As Integer
    Dim Val11 As Integer
    Dim Val12 As Integer
    Dim Val14 As Integer
    Dim Val16 As Integer
    Dim Val18 As Integer
    Dim Val21 As Integer
    Dim Val22 As Integer
    Dim Val24 As Integer
    Dim Val25 As Integer
    Dim Val26 As Integer

    Val6 = Range("C6").Value
    Val7 = Range("C7").Value
    Val9 = Range("C9").Value
    Val10 = Range("C10").Value
    Val11 = Range("C11").Value
    Val12 = Range("C12").Value
    Val14 = Range("C14").Value
    Val16 = Range("C16").Value
    Val18 = Range("C18").Value
    Val21 = Range("C21").Value
    Val22 = Range("C22").Value
    Val24 = Range("C24").Value
    Val25 = Range("C25").Value
    Val26 = Range("C26").Value

    Range("C6").Value = Val26
    Range("C7").Value = Val6
    Range("C9").Value = Val7
    Range("C10").Value = Val9
    Range("C11").Value = Val10
    Range("C12").Value = Val11
    Range("C14").Value = Val12
    Range("C16").Value = Val14
    Range("C18").Value = Val16
    Range("C21").Value = Val18
    Range("C22").Value = Val21
    Range("C24").Value = Val22
    Range("C25").Value = Val24
    Range("C26").Value = Val25

End Sub

Du coup je comprend son fonctionnement.

La le tableau je vais essayer de me pencher dessus également pour comprendre.

Merci bien, c'est vraiment top de connaitre tout ça en VBA.

Re,

Voici les deux (colonne et ligne) :

Sub En_Colonne()

    Dim Tbl(1 To 14) As Integer
    Dim I As Integer

    'sur la colonne A de A1 à A14
    For I = 1 To 14: Tbl(I) = Cells(I, 1).Value: Next I

    Cells(1, 1).Value = Tbl(14)

    For I = 1 To 13: Cells(I + 1, 1).Value = Tbl(I): Next I

End Sub

Sub En_Ligne()

    Dim Tbl(1 To 14) As Integer
    Dim I As Integer

    'sur la ligne 1 de A1 à N1
    For I = 1 To 14: Tbl(I) = Cells(1, I).Value: Next I

    Cells(1, 1).Value = Tbl(14)

    For I = 1 To 13: Cells(1, I + 1).Value = Tbl(I): Next I

End Sub

Ici avec la prise en compte des "trous" dans la liste par rapport à ton dernier code :

Sub En_ColonneAvecTrous()

    Dim Tbl(1 To 2, 1 To 14) As Integer
    Dim I As Integer
    Dim J As Integer

    'sur la colonne C de C6 à C26 avec des cellules vides
    For I = 6 To 26

        If Cells(I, 3).Value <> "" Then

            J = J + 1
            Tbl(1, J) = Cells(I, 3).Value
            Tbl(2, J) = Cells(I, 3).Row 'mémorise le numéro de ligne

        End If

    Next I

    Cells(6, 3).Value = Tbl(1, 14)

    'utilise le numéro de ligne stocké dans le tableau pour faire référence à la bonne cellule
    For I = 1 To 13: Cells(Tbl(2, I + 1), 3).Value = Tbl(1, I): Next I

End Sub

Super !!

j'ai de quoi m'amuser pour comprend tous correctement avec trois cas possible.

Sincèrement merci !

Re,

Content de t'avoir aidé

Rechercher des sujets similaires à "incrementation numerique automatique"