IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonctionnement du Offset


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut Fonctionnement du Offset
    Bonjour,

    J'ai ce code qui marche bien mais que j'aimerai faire évoluer.

    Ici, par exemple, il rempli en décalant de 1 la valeur de la colonne 3 de la base.
    Comment faire pour remplir la cellule décalée de 1 et aussi la cellule décalée de 19?

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Dim J As Long
        Dim cellule As Range
        Dim Tabl As Variant
     
        If Not Intersect(Target, [B20:B141]) Is Nothing Then
     
        Application.EnableEvents = False
     
        'Quand on entre une réf, on recupère désignation, matière, traitement, prix...
            Tabl = [ListeToutArticles].Value2 '"Value2" recopie toutes les décimales
     
     
     
                For Each cellule In Target.Cells  'on lit chaque cellule modifiée
                   For J = 1 To UBound(Tabl)
                       If Tabl(J, 2) = cellule.Value2 Then  'Si réf dans la base correspond, alors
     
     
                           Application.EnableEvents = False
                           cellule.Offset(, 1) = Tabl(J, 3) 'colonne 1 (Désignation) par rapport à B = colonne 3 de la base
                           cellule.Offset(, 2) = Tabl(J, 5) 'colonne 2 (Matière)
                           cellule.Offset(, 3) = Tabl(J, 6) 'colonne 3 (Traitement finition)
                           cellule.Offset(, 5) = Tabl(J, 8) 'colonne 3 (Unité)
     
                           'en dehors du champ visible pour pouvoir reocpier ligne dans la base
                           cellule.Offset(, 17) = Tabl(J, 1)
                           cellule.Offset(, 18) = Tabl(J, 2) 'réf
                          ' cellule.Offset(, 19) = Tabl(J, 3) 'dési
                           cellule.Offset(, 20) = Tabl(J, 4) 'complé dési
                          ' cellule.Offset(, 21) = Tabl(J, 5) 'matière
                          ' cellule.Offset(, 22) = Tabl(J, 6) 'traitement
                           'cellule.Offset(, 23) = Tabl(J, 7)'fournisseur
                          ' cellule.Offset(, 24) = Tabl(J, 8) 'Unité
                           'cellule.Offset(, 25) = Tabl(J, 9) 'tarif
                          ' cellule.Offset(, 26) = Tabl(J, 10) 'date
                           cellule.Offset(, 27) = Tabl(J, 11) 'marque
     
     
                       End If
     
                        If Tabl(J, 2) = cellule.Value2 And Range("E4") <> "" And Tabl(J, 7) = [E4] Then  'Si fournisseur renseigné et article lié au fournisseur alors on renvoi le tarif du fournisseur
     
     
                           cellule.Offset(, 6) = Val(Replace((Tabl(J, 9)), ",", ".")) 'colonne 6 (PU € HT) VAL récupère la valeur numérique du prix qui est en format texte
                           Application.EnableEvents = True
                           Exit For
     
                         Else
                         'ne pas renvoyer de tarif si le fournisseur n'est pas renseigné dans l'entête
                       End If
     
                   Next J
                Next
     
     
        End If

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est ça que tu cherches ? https://msdn.microsoft.com/fr-fr/lib.../ff840060.aspx
    Si c'est le cas, il suffit de placer ton curseur sur Offset dans ton éditeur VBA et d'appuyer sur F1.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2014, 08h14
  2. Range.Offset(1) dans une boucle qui ne fonctionne pas
    Par Pierre.g dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2008, 11h58
  3. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo