VBA Excel. Notion de déplacement du pointeur sur le cellules
Robert2267
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour chers membres.
J'ai un petit soucis.
En VBA, j'ai conçu un jeu pareil au jeu de dame. Je déplace le bouton macro avec la commande activecels. Dont je met entre parenthèses 1,0 pour faire déplacer.
mais ce que je veux ce n'est pas ça.
j'aimerais que dès que je clique sur le bouton, le pointeur de cellule se déplacer à un clic jusqu'à la fin donc la dernière cellule coloré.
Au total je prend 10cellules sur 10 celles colorées différemment.
comme rouge et bleu.
J'ai un petit soucis.
En VBA, j'ai conçu un jeu pareil au jeu de dame. Je déplace le bouton macro avec la commande activecels. Dont je met entre parenthèses 1,0 pour faire déplacer.
mais ce que je veux ce n'est pas ça.
j'aimerais que dès que je clique sur le bouton, le pointeur de cellule se déplacer à un clic jusqu'à la fin donc la dernière cellule coloré.
Au total je prend 10cellules sur 10 celles colorées différemment.
comme rouge et bleu.
A voir également:
- VBA Excel. Notion de déplacement du pointeur sur le cellules
- Déplacer colonne excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Word et excel gratuit - Guide
3 réponses
Bonjour,
Voici un code qui te place le curseur dans le coin supérieur gauche de la cellule Feuil1 B22.
Tu lances la procédure "Positionne" et, après, à toi de l'adapter à ta situation...
Voici un code qui te place le curseur dans le coin supérieur gauche de la cellule Feuil1 B22.
Tu lances la procédure "Positionne" et, après, à toi de l'adapter à ta situation...
Option Explicit '---- Déterminer les coordonnées en pixels, par rapport à l'écran, du coin supérieur gauche d'une cellule Excel Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Private Type position Left As Integer Top As Integer End Type Private Const GARDEFOU As Byte = 20 Sub Positionne() Place_Curseur Sheets("Feuil1").Range("B22") End Sub Private Sub Place_Curseur(Cellule As Range) Dim PosCur As position, p As Pane Set p = QuelPane(Cellule, True) If Not p Is Nothing Then PosCur = TopLeftCellule(p, Cellule, False) SetCursorPos PosCur.Left, PosCur.Top End If Set Cellule = Nothing Set p = Nothing End Sub Private Function TopLeftCellule(ByVal LePane As Pane, ByVal rng As Range, Optional ByVal DansLaCellule As Boolean = True) As position Dim cel As Range, cc As Byte, cr As Byte, L As Integer, t As Integer, B As Integer, R As Integer, IniL As Integer, INIT As Integer, IniR As Integer, IniB As Integer With LePane If rng.Column = .ScrollColumn Then cc = 0 Else cc = 5 If rng.Row = .ScrollRow Then cr = 0 Else cr = 5 L = .PointsToScreenPixelsX(rng.Left) - cc: IniL = L t = .PointsToScreenPixelsY(rng.Top) - cr: INIT = t R = .PointsToScreenPixelsX(rng.Offset(1, 1).Left) - cc: IniR = R B = .PointsToScreenPixelsY(rng.Offset(1, 1).Top) - cr: IniB = B On Error Resume Next Set cel = ActiveWindow.RangeFromPoint(L, t) Do Until cel.Left >= rng.Left L = L + 1 If L > IniL + GARDEFOU Then GoTo BoucleInfinie Set cel = ActiveWindow.RangeFromPoint(L, t) Loop Do Until cel.Top >= rng.Top t = t + 1 If t > INIT + GARDEFOU Then GoTo BoucleInfinie Set cel = ActiveWindow.RangeFromPoint(L, t) Loop Set cel = Nothing End With TopLeftCellule.Left = IIf(DansLaCellule, L, L - 1) TopLeftCellule.Top = IIf(DansLaCellule, t, t - 1) Exit Function BoucleInfinie: MsgBox "Conditions impossibles pour le positionnement du curseur" End Function Private Function QuelPane(ByVal t As Range, Optional ByVal ActivationFeuil As Boolean = False) As Pane Dim LngNbPanes As Long, LngPane As Long If ActiveWindow.VisibleRange.Worksheet.Parent.Name = t.Worksheet.Parent.Name Then If ActiveWindow.ActiveSheet.Name = t.Worksheet.Name Or ActivationFeuil Then t.Worksheet.Activate LngNbPanes = ActiveWindow.Panes.Count For LngPane = 1 To LngNbPanes With ActiveWindow.Panes(LngPane) If Not Intersect(t, .VisibleRange) Is Nothing Then Set QuelPane = ActiveWindow.Panes(LngPane) Exit Function End If End With Next End If End If Set QuelPane = Nothing End Function '---- <> Déterminer les coordonnées en pixels, par rapport à l'écran, du coin supérieur gauche d'une cellule Excel <>
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu montrer ton code?
voici les codes VBA.
'----- Les codes si-dessus sont pour colorer les cellules (bleu et jaune), de la première cellule jusqu'à la 10ème. Dès gauche à droite et de haut en bas ---------'
__________________________________________
C'est ici que j'ai une préocupation .
Je suis devant la feuille Excel.
L'onglet DÉVELOPPEUR pour insérer un bouton macro. Bouton Insérer et je prends macro qui est le premier bouton ; j'insère le bouton et je n'affecte pas.
Je lance Visual Basic pour saisir le code qui va me permettre à déplacer le curseur de gauche à droite. Comme je peux le faire de l'iverse et de haut en bas.
Codes
J'
'
Sub Dame() Dim ligne, colonne As Integer ligne =1 For ligne= 1 To 10 For Colonne= 1 To 10 If (colonne + ligne) Moi 2 =0 Then cells(ligne, colonne). Interior.Color = vbBlue Else Cells(ligne, colonne).Interior. color = vbYellow If (Range("A1").Select = True) Then End If End If Next colonne Next ligne End Sub
'----- Les codes si-dessus sont pour colorer les cellules (bleu et jaune), de la première cellule jusqu'à la 10ème. Dès gauche à droite et de haut en bas ---------'
__________________________________________
C'est ici que j'ai une préocupation .
Je suis devant la feuille Excel.
L'onglet DÉVELOPPEUR pour insérer un bouton macro. Bouton Insérer et je prends macro qui est le premier bouton ; j'insère le bouton et je n'affecte pas.
Je lance Visual Basic pour saisir le code qui va me permettre à déplacer le curseur de gauche à droite. Comme je peux le faire de l'iverse et de haut en bas.
Codes
Sub gauche() ActiveCell.Offset(-1, 0).Select End Sub
J'
'
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Bonjour,
J'avais très mal compris la demande.
Voyons si je comprends mieux maintenant...
Tu veux "construire" ton damier en coloriant en bleu et jaune tes cellules.
C'est bien cela?
Voici pour toi, bien flashi!
Par contre, petite remarque perso, si tu veux créer un jeu de dames et que tu bloques déjà à ce niveau, ça va pas être facile....
J'avais très mal compris la demande.
Voyons si je comprends mieux maintenant...
Tu veux "construire" ton damier en coloriant en bleu et jaune tes cellules.
C'est bien cela?
Voici pour toi, bien flashi!
Sub Damier() Dim ligne As Integer, colonne As Integer With Sheets("Feuil1") For ligne = 1 To 10 Step 2 For colonne = 1 To 10 Step 2 .Cells(ligne, colonne).Interior.Color = vbBlue .Cells(ligne, colonne + 1).Interior.Color = vbYellow .Cells(ligne + 1, colonne).Interior.Color = vbYellow .Cells(ligne + 1, colonne + 1).Interior.Color = vbBlue Next colonne Next ligne End With End Sub
Par contre, petite remarque perso, si tu veux créer un jeu de dames et que tu bloques déjà à ce niveau, ça va pas être facile....