Target.Offset

Y compris Power BI, Power Query et toute autre question en lien avec Excel
C
Clem7640
Jeune membre
Jeune membre
Messages : 47
Inscrit le : 19 janvier 2019
Version d'Excel : 2013
Version de Calc : 2013

Message par Clem7640 » 10 février 2019, 15:22

Bonjour, je ne comprend pas très bien la fonction Target.Offset

Voici un exemple de code :
Option Explicit

Dim tableau
Dim i

Private Sub Worksheet_Change(ByVal Target As Range) 'La macro se lance si une cellule de la feuille est modifiée. Le paramètre target correspond à la cellule modifiée
    
    If Target.Count > 1 Then Exit Sub 'Si le nb de cellules sélectionnées > 1 ne rien faire
    If Not Intersect(Target, Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing Then 'Si la cellule sélectionnée se trouve dans la plage A1:B et au dessus de la dernière ligne renseignée en A alors
        tableau = Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row) 'Range dans un tableau les valeurs contenues dans la plage A1:B et au dessus de la dernière ligne renseignée en A
         
        If Target.Column = 2 Then 'Si la celulle modifiée se trouve en colonne 2 alors
            For i = 1 To UBound(tableau, 1) 'Pour i allant de 1 à taille du tableau
               	If tableau(i, 1) = Target.Offset(0, -1) Then 'Si cellules ligne i et colonne 1 = ?
                    tableau(i, 2) = Target 'Cellule ligne i et 2 prend la valeur de la cellule modifiée
                End If
            Next i
        End If
    End If
    Range("A1").Resize(UBound(tableau, 1), 2) = tableau 'Le tableau est mis à jour
    
End Sub
Ce que je pense avoir compris : Cellule modifiée se décale de 0 en ligne et de -1 en colonne

Merci pour votre aide
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'889
Appréciations reçues : 158
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr

Message par ric » 10 février 2019, 15:39

Bonjour,

Est-ce que ceci peut aider ?
https://docs.microsoft.com/fr-ca/office ... nge.offset




ric
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
C
Clem7640
Jeune membre
Jeune membre
Messages : 47
Inscrit le : 19 janvier 2019
Version d'Excel : 2013
Version de Calc : 2013

Message par Clem7640 » 10 février 2019, 15:42

Non, ceci ne m'aide pas à mieux comprendre l'action de cette ligne de code. Je ne comprend pas pourquoi on fait un décalage
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'409
Appréciations reçues : 277
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 10 février 2019, 16:34

Bonjour,
Target.Offset(0, -1)
target correspond à la cellule sur laquelle tu as cliqué

target.offset(0,-1) correspond à la cellule à gauche (une colonne à gauche= -1), sur la même ligne (0) de la cellule sur laquelle tu as cliqué

donc si tu as cliqué sur C5, target.offset(0,-1) fait référence à B5

target.offset(2,3) correspond à la cellule qui se trouve dans la 3ème colonne à droite(3), 2 ligne plus bas (2) que la cellule sur laquelle tu as cliqué.

donc si tu as cliqué sur C5, target.offset(2,3) fait référence à F7
Modifié en dernier par h2so4 le 10 février 2019, 16:51, modifié 2 fois.
C
Clem7640
Jeune membre
Jeune membre
Messages : 47
Inscrit le : 19 janvier 2019
Version d'Excel : 2013
Version de Calc : 2013

Message par Clem7640 » 10 février 2019, 16:38

Merci ! Au final j'avais plus ou moins compris.

Cette ligne de code, veut-elle bien dire que le tableau est mis à jour?
Range("A1").Resize(UBound(tableau, 1), 2) = tableau
Merci!
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'689
Appréciations reçues : 647
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 11 février 2019, 07:07

Cette ligne de code, veut-elle bien dire que le tableau est mis à jour ?
Range("A1").Resize(UBound(tableau, 1), 2) = tableau
exact, c'est cette ligne de code qui écrit à partir de la cellule A1 le tableau VBA de nom "tableau".

dhany
1 membre du forum aime ce message.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message