VBA Excel. Notion de déplacement du pointeur sur le cellules
Fermé
Robert2267
Messages postés
8
Date d'inscription
dimanche 7 juin 2020
Statut
Membre
Dernière intervention
19 août 2021
-
9 juin 2020 à 12:32
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 11 juin 2020 à 08:44
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 11 juin 2020 à 08:44
A voir également:
- VBA Excel. Notion de déplacement du pointeur sur le cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Excel cellule couleur si condition texte - Guide
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 juin 2020 à 11:26
10 juin 2020 à 11:26
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
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
Ambassadeur
1 557
10 juin 2020 à 11:32
10 juin 2020 à 11:32
bonjour, peux-tu montrer ton code?
Robert2267
Messages postés
8
Date d'inscription
dimanche 7 juin 2020
Statut
Membre
Dernière intervention
19 août 2021
Modifié le 11 juin 2020 à 08:34
Modifié le 11 juin 2020 à 08:34
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'
'
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
Robert2267
Messages postés
8
Date d'inscription
dimanche 7 juin 2020
Statut
Membre
Dernière intervention
19 août 2021
Modifié le 10 juin 2020 à 19:09
Modifié le 10 juin 2020 à 19:09
pas très clair. tu veux te déplacer de plusieurs cases en un clic? si oui, jusqu'où?
n'hésite pas à donner un exemple.
à tout hasard:
n'hésite pas à donner un exemple.
à tout hasard:
Sub gauche() Cells(selection.row,1).Select End Sub
yg_be
Messages postés
23400
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 décembre 2024
1 557
>
Robert2267
Messages postés
8
Date d'inscription
dimanche 7 juin 2020
Statut
Membre
Dernière intervention
19 août 2021
10 juin 2020 à 19:05
10 juin 2020 à 19:05
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
11 juin 2020 à 08:44
11 juin 2020 à 08:44
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....