Modifier code

Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016 - Modifié par Sanaa.sah le 10/05/2016 à 13:43
Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016 - 10 mai 2016 à 16:39
Bonjour,

Je ne connais rien à Visual Basic et j'ai besoin de modifier un code pour ajouter une colonne dans une macro. J'ai un commentaire pour dire que c'est à ce niveau qu'il faut faire la modif mais moi je ne sais pas comment faire.

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 10/05/2016 à 14:10
Bonjour,

Oui... mais ...heuuuu...... SANS VOIR LE CODE EN QUESTION ...... IMPOSSIBLE DE TE REPONDRE !!!

Edit : Tu as mis une capture écran ... mais ici .. on COLLE directement le code sur le forum.

NB : Il faudrait également que tu précises ce que tu souhaites exactement faire.


Cordialement, 
Jordane                                                                 
0
Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016
Modifié par jordane45 le 10/05/2016 à 14:25
Merci Jordane pour ta réponse .. j'ai mis une image du code .. je sais pas si tu n'arrives pas à la voir!
Voici tout le code:


''' <summary>
''' Example for exporting Excel data to an ENTERPRISE Synthesis Data Warehouse (SDW)
''' </summary>
''' <remarks>YOU MUST HAVE THE SAME bit-VERSION of Synthesis and Excel for this to work!
'''          If you are using the 64-Bit office you need the 64-Bit Version of Synthesis
'''          This code applies to enterprise repositories. (Not standard repositories)
''' </remarks>

''' <summary>
''' Provides the command button with a process
''' </summary>
''' <remarks>Provides a process for opening a specific repository</remarks>
Private Sub ProcessRDW_Click()
    'Dimension the RawDataSet variable
    Dim RDSet As New RawDataSet
    
    'Set a Name for the Extracted data set
    Dim DName As String
    DName = InputBox("Data set name?")
    If DName = "" Then
        MsgBox "Operation Canceled/Aborted"
        Exit Sub
    End If
    RDSet.ExtractedName = DName
    
    'This is Weibull data
    RDSet.ExtractedType = RawDataSetType_Weibull
    
    'Load Excel data from the spreadsheet into the RawDataSet
    Call PopulateDataSet(RDSet)
      
    'Declare a new repository connection class
    Dim MyRepository As New Repository
    
    frmWait.lblWait = "Connecting to Repository..."
    DoEvents
    
    'Modify variables below to connect to your enterprise database.
    Dim ServerName As String
    Dim DataBaseName As String
    ServerName = "CNFR009087\SQLEXPRESS"
    DataBaseName = "AlstomFiabilité"
    
    'Connect to the Synthesis repository
    Dim Success As Boolean
    Success = MyRepository.ConnectToSQLRepository(ServerName, DataBaseName)
    
    If Not Success Then MsgBox "Unable to connect the Database - " & ServerName & "/" & DataBaseName
        
    'Save the raw data to the Synthesis repository
    Success = MyRepository.DataWarehouse.SaveRawDataSet(RDSet)
    If Success Then
        frmWait.lblWait = "Sucess!"
        MsgBox "The data have been saved."
        DoEvents
    Else
        MsgBox "Unable to save data"
    End If
   
    'Disconnect the Synthesis repository
    Call MyRepository.DisconnectFromRepository
    Unload frmWait
End Sub


''' <summary>
''' Start loading Excel data into the RawDataSet object that will load into the repository
''' </summary>
''' <remarks>Helper Subroutine for ProcessRDW_Click</remarks>
Private Sub PopulateDataSet(ByRef rds As RawDataSet)
    'Form to tell the user what the progress is....
    frmWait.Show (False)
    frmWait.lblWait = "Reading Data..."
   
    'Get data from source (in this case excel)
    Dim maxRow As Integer
    maxRow = 3000
      
    'Read each row and add to the RawDataSet
    Dim rd As New RawData
    Dim i As Integer
    For i = 2 To maxRow
        Set rd = New RawData
        
        'Progress counter
        frmWait.lblWait = "Reading Row... " & Format(i) & " of " & Format(maxRow)
        DoEvents
        
        'Set desired values for the current data row
        rd.PartName = Sheet1.Cells(i, 1)
        rd.ParentPartID = Val(Sheet1.Cells(i, 2))
        rd.PartNumber = Sheet1.Cells(i, 3)
        rd.FailureMode = Sheet1.Cells(i, 4)
        rd.Chargeable = Val(Sheet1.Cells(i, 5))
        rd.StateFS = Sheet1.Cells(i, 6)
        rd.StateTime = Val(Sheet1.Cells(i, 7))
        
        'Add row to the data set
        Call rds.AddDataRow(rd)
    
        
    Next i
End Sub


EDIT : Ajout des balises de code
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
10 mai 2016 à 14:30
C'est mieux.
Par contre... tu n'as toujours pas expliqué EN DETAIL ce que tu souhaites faire....
Quand tu dis :

ajouter une colonne dans une macro

... tu veux dire "ajouter" une colonne au dataset ?
.. Cette colonne existe dans ta BDD ?
.. La donnée à utiliser se trouve dans quel colonne de ta feuille Excel ?


Car là .. il suffit de faire comme ces lignes la :
'Set desired values for the current data row
        rd.PartName = Sheet1.Cells(i, 1)
        rd.ParentPartID = Val(Sheet1.Cells(i, 2))
        rd.PartNumber = Sheet1.Cells(i, 3)
        rd.FailureMode = Sheet1.Cells(i, 4)
        rd.Chargeable = Val(Sheet1.Cells(i, 5))
        rd.StateFS = Sheet1.Cells(i, 6)
        rd.StateTime = Val(Sheet1.Cells(i, 7))


pour ajouter une donnée à ta bdd (en partant du principe que la colonne existe déjà dans la table )
par exemple, imaginons que tu veuilles remplir la colonne nommée "toto" dans ta BDD ...et que la donnée à prendre dans la feuille excel se trouve dans la douzième colonne... alors il te suffit de faire :
 rd.toto= Val(Sheet1.Cells(i, 12))
0
Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016
10 mai 2016 à 14:41
En fait le fichier Excel est un exemple fourni par l'éditeur du logiciel (Reliasoft), c'est pour permettre de faire des importations de données directement au logiciel via une macro.
Sur le fichier Excel (L'exemple), il y a 8 colonnes et des données et je souhaite le personnaliser pour l'adapter à mon besoin. Comme tu as du le voir sur le code j'ai des colonnes (PartName, ParentPartId, FailureMode, ..) qui sont par défaut et je souhaite ajouter des colonnes qui correspondent à mon besoin.
Du coup, d'après ce que j'ai compris je dois appeler la méthode en mettant le nom de ma colonne.
'Add row to the data set
Call rds.AddDataRow(rd)

Chose que je n'ai pas su faire :(
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
10 mai 2016 à 14:29
bonjour
A l'endroit de ton commentaire sur le premier message tout en haut c'est pour ajouter une ligne et non une colonne !
0
Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016
10 mai 2016 à 14:46
Bonjour, merci pour ta réponse.
Pour le deuxième commentaire:
'Add row to the data set ?
C'est pas pour la colonne?
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016
Modifié par vb95 le 10/05/2016 à 15:27
Bonjour
C'est pour ajouter la ligne courante
Row signifie ligne en anglais
Column signifie colonne
Je t'ai traduit les commentaires


'Set desired values for the current data row
'Initialise les valeurs désirées pour la ligne courante
rd.PartName = Sheet1.Cells(i, 1)
rd.ParentPartID = Val(Sheet1.Cells(i, 2))
rd.PartNumber = Sheet1.Cells(i, 3)
rd.FailureMode = Sheet1.Cells(i, 4)
rd.Chargeable = Val(Sheet1.Cells(i, 5))
rd.StateFS = Sheet1.Cells(i, 6)
rd.StateTime = Val(Sheet1.Cells(i, 7))
' ici tu peux rajouter une colonne comme ci dessous
rd.Nouvellecolonne = Sheet1.Cells(i,8)

'Add row to the data set
'Ajoute la ligne au data set
Call rds.AddDataRow(rd)


Il va de soit que la colonne rajoutée doit exister dans le fichier Excel ainsi que dans la base de données . Dans l'exemple que je t'ai mis la colonne est de type chaine de caractères et son nom dans la base de données est Nouvellecolonne . Elle est en colonne 8 dans la feuille Excel

Un bonjour à jordane45 en passant
0
Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
10 mai 2016 à 15:29
Quand j'ai rajouter la ligne, je l'ai exécuté, j'ai eu une fenêtre qui m'affiche comme quoi je dois créer une macro, j'ai mis un nom pour la macro ('ok') et je l'ai créé ça m'affiche une nouvelle fenêtre avec ce code:
Sub ok()

End Sub
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016
Modifié par vb95 le 10/05/2016 à 15:48
La colonne rajoutée existe-t-elle dans le fichier Excel ainsi que dans la base de données ?
0
Sanaa.sah Messages postés 9 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 1 juin 2016
10 mai 2016 à 15:50
Non ..
0
Rejoignez-nous