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

C++Builder Discussion :

Convertir VBA Codes en C++


Sujet :

C++Builder

  1. #1
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut Convertir VBA Codes en C++
    Salut tout le Monde;


    J' utilise actuellement une version gratuite de C++Builder 2007; j'ai reussi à programmer un portcom...Actuellement je voudrais pouvoir ajouter une fonction a mon program qui download et compare les cellules d'un tableau excel et sauvegarde le tout dans SAP.

    Voici a quoi ressemble le code en VBA....
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    Option Explicit
     
    Private oIFace As Object
     
    Public Sub gWriteIni()
     
        Dim nFile As Integer
        Dim sFile As String
     
        Dim sDOWNLOAD As String
        Dim sWERK As String
        Dim sSUBSYS As String
        Dim sGRUPPE As String
        Dim sVORNR As String
        Dim sMERKMAL As String
        Dim sABSCHLUSS As String
        Dim sMETHODE As String
        Dim sMAXLOSANZ As String
        Dim sMaschine As String
     
        Exit Sub
        sDOWNLOAD = "[Download]"
        sWERK = "WERK=" & Tabelle1.Cells(3, 6)
        sSUBSYS = "SUBSYS=" & Tabelle1.Cells(4, 6)
        sGRUPPE = "GRUPPE=" & Tabelle1.Cells(5, 6)
        sVORNR = "VORNR=" & Tabelle1.Cells(6, 6)
        sMERKMAL = "MERKMAL=" & Tabelle1.Cells(7, 6)
        sABSCHLUSS = "ABSCHLUSS=" & Tabelle1.Cells(8, 6)
        sMETHODE = "METHODE=" & Tabelle1.Cells(9, 6)
        sMAXLOSANZ = "MAXLOSANZ=" & Tabelle1.Cells(10, 6)
     
        nFile = FreeFile
        sFile = ThisWorkbook.Path & "\" & Tabelle1.Cells(1, 6)
     
        Open sFile For Output As #nFile
     
        Print #nFile, sDOWNLOAD
        Print #nFile, sWERK
        Print #nFile, sSUBSYS
        Print #nFile, sGRUPPE
        Print #nFile, sVORNR
        Print #nFile, sMERKMAL
        Print #nFile, sABSCHLUSS
        Print #nFile, sMETHODE
        Print #nFile, sMAXLOSANZ
     
        Close #nFile
     
    End Sub
     
    Public Sub gDownload()
     
        Dim i As Long
        Dim j As Long
        Dim l1 As Long
        Dim l2 As Long
     
        Dim saRet() As String
        Dim saParam() As String
        Dim saErr() As String
        Dim sMessId As String
        Dim sQuery As String
        Dim sError As String
        Dim lRetCode As Long
     
     
        '*** INI-Datei mit Werten schreiben
        Call gWriteIni
     
        '*** Schnittstellen-DLL laden
        Set oIFace = CreateObject("SAPBAPI.clsInterface")
     
        ReDim saParam(9)
     
        '*** Messgerät-Id übergeben
        sMessId = Tabelle1.Cells(2, 2)
     
        '*** Parameterarray füllen
        saParam(0) = Tabelle1.Cells(3, 2)
        saParam(1) = Tabelle1.Cells(4, 2)
        saParam(2) = Tabelle1.Cells(5, 2)
        saParam(3) = Tabelle1.Cells(6, 2)
        saParam(4) = Tabelle1.Cells(7, 2)
        saParam(5) = Tabelle1.Cells(8, 2)
        saParam(6) = Tabelle1.Cells(9, 2)
        saParam(7) = Tabelle1.Cells(10, 2)
        saParam(8) = Tabelle1.Cells(11, 2)
     
        '*** alter Rückgabewert löschen
        Tabelle1.Cells(13, 1) = ""
     
        '*** Rückgabefelder löschen
        For i = 0 To 100
            For j = 0 To 60
                Tabelle1.Cells(i + 21, j + 1) = ""
            Next
        Next
     
        '*** Fehlerfelder löschen
        For i = 0 To 3
            For j = 0 To 2
                Tabelle1.Cells(i + 15, j + 1) = ""
            Next
        Next
     
        '*** Download ausführen
        lRetCode = oIFace.GetDataFromSAP(sMessId, saParam(), saRet(), sError, saErr(), sQuery)
     
        Set oIFace = Nothing
     
        '*** Rückgabewert und Meldung ausgeben
        Tabelle1.Cells(13, 1) = lRetCode & " " & sError
     
        '*** wenn Programmfehler aufgetreten
        If lRetCode <> 9999 Then
     
            '*** Rückgabearray in Tabelle anzeigen
            l1 = UBound(saRet, 1) - 1
            l2 = UBound(saRet, 2) - 1
            If l1 <> -1 Then
                For i = 0 To l1
                    For j = 0 To l2
                        Tabelle1.Cells(i + 21, j + 1) = saRet(i, j)
                    Next
                Next
            End If
     
            '*** Fehlerarry in Tablle anzeigen
            l1 = UBound(saErr, 1) - 1
            l2 = UBound(saErr, 2) - 1
            If l1 <> -1 Then
                For i = 0 To l1
                    For j = 0 To l2
                        Tabelle1.Cells(i + 15, j + 1) = saErr(i, j)
                    Next
                Next
            End If
     
        End If
     
    End Sub
     
    Public Sub gUpload()
     
        Dim i As Long
        Dim j As Long
        Dim l1 As Long
        Dim l2 As Long
     
        Dim sMessId As String
        Dim sRueckNr As String
        Dim sErg As String
        Dim sCode As String
        Dim sABSCHLUSS As String
        Dim sAttrib As String
        Dim sPrfBemerkung As String
        Dim sPruefer As String
        Dim lRetCode As Long
        Dim sError As String
        Dim saErr() As String
     
     
        '*** Schnittstellen-DLL laden
        Set oIFace = CreateObject("SAPBAPI.clsInterface")
     
        '*** Übergabeparameter setzen
        sMessId = Tabelle2.Cells(2, 2)
        sRueckNr = Tabelle2.Cells(3, 2)
        sErg = Tabelle2.Cells(4, 2)
        sAttrib = Tabelle2.Cells(5, 2)
        sCode = Tabelle2.Cells(6, 2)
        sPrfBemerkung = Tabelle2.Cells(7, 2)
        sABSCHLUSS = Tabelle2.Cells(8, 2)
        sPruefer = Tabelle2.Cells(9, 2)
     
        '*** alter Rückgabewert löschen
        Tabelle2.Cells(10, 1) = ""
     
        '*** Fehlerfelder löschen
        For i = 0 To 3
            For j = 0 To 2
                Tabelle2.Cells(i + 12, j + 1) = ""
            Next
        Next
     
        '*** Upload ausführen
        lRetCode = oIFace.SendDataToSAP(sMessId, sRueckNr, sErg, sCode, sABSCHLUSS, sError, saErr(), sAttrib, sPrfBemerkung, sPruefer, sMaschine)
     
        Set oIFace = Nothing
     
        '*** Rückgabewert und Meldung ausgeben
        Tabelle2.Cells(10, 1) = lRetCode & " " & sError
     
     
        '*** Fehlerarry in Tablle anzeigen
        l1 = UBound(saErr, 1) - 1
        l2 = UBound(saErr, 2) - 1
     
        For i = 0 To l1
            For j = 0 To l2
                Tabelle2.Cells(i + 12, j + 1) = saErr(i, j)
            Next
        Next
     
    End Sub
     
    Public Sub gGetList()
     
        Dim sMessId As String
        Dim sMatNr As String
        Dim sAPlatz As String
        Dim sEDatVon As String
        Dim sEDatBis As String
        Dim sMERKMAL As String
        Dim sMETHODE As String
        Dim sPrfArt As String
        Dim sCharge As String
        Dim sHerkunft As String
        Dim sWERK As String
     
        Dim i As Integer
        Dim j As Integer
        Dim l1 As Integer
        Dim l2 As Integer
        Dim lRetCode As Long
        Dim saRet() As String
        Dim sError As String
        Dim saErr() As String
     
     
        '*** Schnittstellen-DLL laden
        Set oIFace = CreateObject("SAPBAPI.clsInterface")
     
        '*** Messgerät-Id und Parameter übergeben
        sMessId = Tabelle3.Cells(2, 2)
        sMatNr = Tabelle3.Cells(3, 2)
        sAPlatz = Tabelle3.Cells(4, 2)
        sEDatVon = Tabelle3.Cells(5, 2)
        sEDatBis = Tabelle3.Cells(6, 2)
        sMERKMAL = Tabelle3.Cells(7, 2)
        sMETHODE = Tabelle3.Cells(8, 2)
        sPrfArt = Tabelle3.Cells(9, 2)
        sCharge = Tabelle3.Cells(10, 2)
        sHerkunft = Tabelle3.Cells(11, 2)
        sWERK = Tabelle3.Cells(12, 2)
     
     
        '*** alter Rückgabewert löschen
        Tabelle3.Cells(14, 1) = ""
     
     
        '*** Rückgabefelder löschen
        For i = 0 To 100
            For j = 0 To 40
                Tabelle3.Cells(i + 28, j + 1) = ""
            Next
        Next
     
        '*** Fehlerfelder löschen
        For i = 0 To 9
            For j = 0 To 2
                Tabelle3.Cells(i + 16, j + 1) = ""
            Next
        Next
     
     
        '*** Arbeitsvorrat ermitteln
        lRetCode = oIFace.GetWorklistFromSAP(sMessId, saRet(), sError, saErr(), sMatNr, _
                                                                                sAPlatz, _
                                                                                sEDatVon, _
                                                                                sEDatBis, _
                                                                                sMERKMAL, _
                                                                                sMETHODE, _
                                                                                sPrfArt, _
                                                                                sCharge, _
                                                                                sHerkunft, _
                                                                                sWERK)
     
        Set oIFace = Nothing
     
        '*** Rückgabewert und Meldung ausgeben
        Tabelle3.Cells(14, 1) = lRetCode & " " & sError
     
        '*** wenn Programmfehler aufgetreten
        If lRetCode <> 9999 Then
     
            '*** Rückgabearray in Tabelle anzeigen
            l1 = UBound(saRet, 1) - 1
            l2 = UBound(saRet, 2) - 1
            If l1 <> -1 Then
                For i = 0 To l1
                    For j = 0 To l2
                        Tabelle3.Cells(i + 28, j + 1) = saRet(i, j)
                    Next
                Next
            End If
     
            '*** Fehlerarry in Tablle anzeigen
            l1 = UBound(saErr, 1) - 1
            l2 = UBound(saErr, 2) - 1
            If l1 <> -1 Then
                For i = 0 To l1
                    For j = 0 To l2
                        Tabelle3.Cells(i + 16, j + 1) = saErr(i, j)
                    Next
                Next
            End If
     
        End If
     
    End Sub



    ma Question est la suivante :

    peut on traduire un code VBA en C++Builder?

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut 3logy
    Dans la FAQ C++Builder tu a ceci
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut Merci
    Citation Envoyé par blondelle Voir le message
    Salut 3logy
    Dans la FAQ C++Builder tu a ceci
    Salut Blondelle; merci pour cet reponse rapide, j'ai bien regarde dans le F.A.Q avant de poster. Mon probleme j'ai pas vraiment d'experience dans le domaine , je ne sais mm pas comment je pourrais utiliser ces Variants VCells et consorts....

    Et platoniquement je devrais juste convertir le code ci-dessus

    Donc bref si quelqu'un a bien l'amabilite de me dire comment je pourrais telecharger des donnees specifiques de l'excel à mon StringGrid... faire une comparaison, et ensuite l'envoyer a SAP...

    1.Getworklist
    2.GetBarcode
    3.WriteSAP


    Merci.....

  4. #4
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    en théorie, il est possible de traduire un langage dans un autre langage, à la condition de maitriser les 2.

    Cependant ce cas est particulier puisque VBA est un langage adapté aux classeurs EXCEL. Or CBuilder, VisualCPP... ne sont pas adaptés à cet environnement.
    Donc il faudrait d'abord charger le fichier EXCEL, puis ensuite savoir le décortiquer pour y récupérer les informations. Ca ce n'est pas une mince affaire
    @ bientôt...

    Salut & @+ sur 3W!

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Un Tuto sur le site.
    Un post pour te permettre de commencer.
    Avec le lien sur la FAQ et ceux ci dessus je pense que tu dois pouvoir commencer quelque chose, sans trop de problemes.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  6. #6
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Merci blondelle pour tes liens....

    Voici la vue de mon tableau Excel(ci-dessous) et j'aimerais aller dans le tableau "Worklist"; voici c que j'ai ecrit:


    void __fastcall TConnectionSR232App::SaveToExcelClick(TObject *Sender)
    {
    Variant vMSExcel;
    vMSExcel = Variant::CreateObject("Excel.Application");

    Variant vFileName, vXLWorkbooks, vXLWorkbook;

    vFileName = "c:\\Mess_Demo2.xls";
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);

    vMSExcel.OlePropertySet("Visible", true);

    vMSExcel.OlePropertySet("Interactive", true);

    // vXLWorkbooks représente l'ensemble des classeurs
    //vXLWorkbook = vXLWorkbooks.OleFunction("Add");

    Variant vWorksheets;
    // vXLWorkbook est de type Variant
    vWorksheets = vXLWorkbook.OlePropertyGet("Worklist");

    Variant vWorksheet; // vXLWorkbook est de type Variant

    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "Worklist"); // vWsName est un Variant initialisé à la position (commence à 1)

    Variant vCell;
    vCell = vWorksheet.OlePropertyGet("Range", "A1");

    //vCell.OlePropertySet("Value", 2); //ecrire dans cell





    }

    Mais malheuresement j'ai une erreur et mm lorsque ca marche je ne tombe pas sur le sheet Worklist! Comment je dois faire?

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut 3logy:
    Ce code devrait te permettre d'ouvrir ton fichier et selectionner ta feuille
    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
     
    Variant vMSExcel, vFileName, vXLWorkbook, vXLWorkbooks, vWorksheet;
    try
     {
        vMSExcel = Variant::GetActiveObject("Excel.Application");
        // si une instance d'Excel est presente on l'ouvre
     }
     catch(...)
     {
        vMSExcel = Variant::CreateObject("Excel.Application");
        // si on passe ici en ayant declanche une Exception c'est normal
        // relancer par RUN
        // on cree une instance d'Excel
     }
    vMSExcel.OlePropertySet("Visible", true);
    vFileName = "C:\\Mess_Demo2.xls";
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
    // ici le fichier Mess_Demo2.xls est charge
     
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "Worklist");
    // on selectionne la Worklist
    vWorksheet.OleProcedure("Select");
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  8. #8
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    peut être que sur le forum EXCEL, ils seraient plus pointus pour expliquer un problème de Visual Basic pour EXCEL ?
    @ bientôt...

    Salut & @+ sur 3W!

  9. #9
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par rtg57 Voir le message
    Bonjour,

    peut être que sur le forum EXCEL, ils seraient plus pointus pour expliquer un problème de Visual Basic pour EXCEL ?
    Salut rtg57, J'y avais aussi pense, mais le moderateur l'a deplace ici...et je crois c mieux, J'utilise en fait C++builder pas Visual Basic.

  10. #10
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Merci Blondelle, ca fonctionne.

    Maintenant il me faut recuperer la valeur dans la Cellule G24(colonne G, ligne 24)....le probleme je dois le comparer avec la valeur de mm type entrez par l'utilisateur dans ma Grid....je m'explique:

    L'utilisateur entre un Code(Ex2345), il appuie sur le bouton "import", le CBuilder va dans Excel dans le Worklist(grace a toi); et dans la Colonne G il cherche le mm Code et s'il trouve Ex2345 il recupere sur la mm ligne(24) dans la Colonne C la valeur s'y trouvant....
    bon maintenant c bien beau d'ecrire, je vais essayer d'avancer avec mes connaissances mais je crois pas que j'aurais un resultat implementable...Une idee est toujours le bien venu...
    Mon probleme sera surtout comment faire une recherche automatique, parce qu'a la fin Excel doit etre invisible et l'utilisateur ne pressera que le bouton "import".

    Merci

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut 3logy:
    Tu est effectivement sur le bon Forum
    Pour rendre Excel invisible modifier cette ligne du code que je t'ai fourni
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vMSExcel.OlePropertySet("Visible", false);
    Trois liens sur la FAQ qui doivent repondre a tes besoins
    Pour rechercher
    Pour lire
    Pour ecrire
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  12. #12
    Membre actif Avatar de 3logy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2007
    Messages : 280
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par blondelle Voir le message
    FAQ qui doivent repondre a tes besoins
    Pour rechercher
    vRange recherche sur la ligne ou sur la colonne?car j'ai besoin de faire une recherche sur la colonne et ensuite sur la ligne!

    Merci

    Regarde un peu Ceci:
    Variant vValue, vRange, vCell;
    AnsiString aValue;

    vRange = "H";

    vCell = vRange.OleFunction("Find", "26636516K0");
    StringGrid1->Cells[4][1] = vCell;
    Mais j'ai une erreur ! il ouvre bien Excel mais ne mets pas la valeur trouver dans Cells[4][1]

  13. #13
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Il te faut selectionner ta plage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Variant vWsRange, vRange, vCell;
    vWsRange = "A1:H10"; // la plage de cellules ou on fait la recherche
    vRange = vWorksheet.OlePropertyGet("Range", vWsRange); // on selectionne la plage
    vCell = vRange.OleFunction("Find", "26636516K0");
    vCell est l'adresse ou se trouve " 26636516K0 " exemple " B3 " il te faut donc recuperer son contenu
    Pour recuperer le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String vValue;
    vValue = vCell.OlePropertyGet("Value");
    Apres reflextion je me demande si ce n'est pas plutot ceci qu'il te faut, ce code permet de lire dans une double boucle une place de cellule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    vCell = vWorksheet.OlePropertyGet("Cells", 1, 1); // ligne, colonne, remplacer les valeurs 1, 1 par les variables de boucle x, y par exemple
    String vValue;
    vValue = vCell.OlePropertyGet("Value");
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir un code de VBA à VB.NET
    Par dariaa dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/04/2015, 17h40
  2. [AC-2010] convertir du code vba à la volée
    Par jcs75 dans le forum VBA Access
    Réponses: 4
    Dernier message: 05/11/2012, 01h28
  3. [VBA-E] Convertir du code VBA 2000 en VBA 97
    Par Mykeul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2006, 11h05
  4. [VBA] Code entre forms
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 28/12/2005, 21h57
  5. [mx2004]Convertir un code ASCII en une lettre
    Par caramel dans le forum Flash
    Réponses: 3
    Dernier message: 28/01/2004, 16h26

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