Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Explication ligne de code VBA

cathodique

XLDnaute Barbatruc
Bonjour,

Je voulais répondre à une discussion à peu similaire à un problème que j'avais rencontré. Pour donner quelques explications sur le code, je bute sur cette ligne de code: le 3 après End correspond à XlUp mais j'ai oublié que signifie (2) qui précède le .Resize
Code:
Sheets("FBD.PC").Cells(Rows.Count, 1).End(3)(2).Resize(UBound(T_Report, 1), UBound(T_Report, 2)) = T_Report

J'ai beau cherché dans l'aide je ne suis pas parvenu à trouver une explication.
Autre chose, comment trouver la correspondance numérique de certaines syntaxes vba.
ex: XlUp=3

En vous remerciant par avance.
 

belkacem_64

XLDnaute Junior
Salut

La Numéro 2 représente le déplacement avec 2 cellule après le dernier rangée
--------------------
Pour la question comment trouver la correspondance numérique de certaines syntaxes vba. ex: XlUp=3

Essayez d'écrire la ligne suivante
Range("A1").End
Maintenant, lorsque vous tapez ( après le mot End Vous remarquerez 3 Options , Chaque option représente un nombre
 

cathodique

XLDnaute Barbatruc
Merci beaucoup Belkacem_64 pour tes explications.
J'ai perdu le fil de la discussion mais voici le fichier.
Il ou elle cherchait à transférer des données d'une feuille à une autre avec une disposition différente.
en effet, la feuille suivi cde est sous forme de bd alors que la feuille bon de cde à une entête et un tableau.
code complet
Code:
Option Explicit

Sub Transfert()
    Dim i&
    Dim Plg As Range, PLg_EnTete As Range
    Dim T_EnTete As Variant, T_Data As Variant, T_Report As Variant

    Application.EnableEvents = False
    Application.ScreenUpdating = False          'désactive mise à jour écran

    With Sheets("Bon de cde")
        Set Plg = .Range(.Cells(8, 1), .Cells(.Rows.Count, 1).End(3).Offset(, 3))
        T_EnTete = .Range("A1:D5")
    End With
    T_Data = Plg
    ReDim T_Report(1 To UBound(T_Data, 1), 1 To 6)

    For i = LBound(T_Data, 1) To UBound(T_Data, 1)
        T_Report(i, 1) = T_EnTete(1, 4)           'n° bon de commande
        T_Report(i, 2) = CDate(T_EnTete(3, 4))      'date de demande
        T_Report(i, 5) = T_EnTete(5, 2)        'N° Affaire

'        'On boucle sur les colonnes du tableau T_Report
        T_Report(i, 3) = CStr(T_Data(i, 1))       'ref interne
        T_Report(i, 4) = T_Data(i, 2)       'Désignation produit
        T_Report(i, 6) = T_Data(i, 3)        'quantité

    Next i
     
    Sheets("Suivi cde").Cells(Rows.Count, 1).End(3)(2).Resize(UBound(T_Report, 1), UBound(T_Report, 2)) = T_Report

    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub
Pour le 2 je n'ai pas encore bien compris.
Encore merci
 

Pièces jointes

  • Suivi cde 2016.xlsm
    23.2 KB · Affichages: 50

cathodique

XLDnaute Barbatruc
Bonjour Job75,

Merci beaucoup pour ton astuce. Aurais-tu une autre explication pour le (2) qui précède Resize de la ligne de code ci-dessous:
Code:
Sheets("Suivi cde").Cells(Rows.Count, 1).End(3)(2).Resize(UBound(T_Report, 1), UBound(T_Report, 2)) = T_Report
En vous remerciant.
 

cathodique

XLDnaute Barbatruc
Pas bien compris ton avant-dernier message. En effet, je ne voulais pas proposer de code sans explications.
Pour le XlUp c'est bon j'ai compris. Je n'ai pas encore compris le (2).Resize
Merci quand même.
 

laetitia90

XLDnaute Barbatruc
bonjour cathodique job

tu as bien compris equivalent de .row+1
mais cela peut être 3 4 5 ect... -1, -2 ect tout depend ou tu veus restituer ton tablo
fais des essais sur plage pour copier une valeur tu vas vite comprendre
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…