VBA Excel. Notion de déplacement du pointeur sur le cellules
Robert2267
Messages postés
10
Statut
Membre
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
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
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Excel compter cellule couleur sans vba - 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 <>
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....