kido87
Messages postés39Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention29 juin 2007
-
19 juin 2007 à 08:46
kido87
Messages postés39Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention29 juin 2007
-
29 juin 2007 à 16:12
Bonjours à tous, je suis nouveau et pas tres expérimenté en VBA.... Je suis actuellement en stage et on ma demandé de faire un petit code d'importation/convertion Excel vers Acess.
Je vous mon tre mon code:
Sub Cmd_Importation_Click()
On Error GoTo err
Dim Num_agent As Integer 'AutoIncrement(pas de numéro d'agent)
Dim Nom_agent As String 'Nom de l'agent
Dim Num_projet As Integer 'AutoIncrement (pas de numéro de projet)
Dim Semaine_realisation As String 'numéro de la semaine de réalisation
Dim Metier As String 'Métier
Dim Projet As String 'Nom du projet
Dim Description As String 'description de l'activité réalisée
Dim Tache As String 'Avancement (en pourcentage ou terminé)
Dim Temps_passe As Integer 'Temps_passé sur le projet (en h)
Dim SQL As String 'Variable qui permet de créer une table
Dim Text1 As String 'Variable qui va contenir le nom du fichier à importer
Dim Text2 As String 'Variable qui va contenir l'emplacement du fichier à importer
Dim Text3 As String 'Variable qui va contenir le nom de la table d'importation n°1
Dim Text4 As String 'Variable qui va contenir le nom de la table d'importation n°2
Dim NomFic As String 'Nom du fichier à importer
Dim Pathfic As String 'Emplacement du fichier à importer
Dim NomTable As String 'Nom de la table d'importation n°1
Dim NomTable2 As String 'Nom de la table d'importation n°2
Dim j As String 'Compteur
Dim xls As Excel.Application 'Excel
Dim Rsg As String 'Renseignement de la boite de dialogue, rentré par l'utilisateur
Dim NomDuFichier 'Nom du fichier à importer (insertion des cellule Excel)
NomDuFichier = InputBox("Entrez le nom du fichier à importer ")
If (NomDuFichier <> "") Then
MsgBox NomDuFichier
Else
réponse = MsgBox("Nom du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
Set Dbs CurrentDb 'CurrentDb> Suivi_activites
Set NomDuFichier = CreateObject("Excel.application")
'Initialisation du fichier a Importer
Rsg = NomDuFichier
Text1 = Rsg
ClasseurXLS = Rsg
If (Text1 <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
Else
réponse = MsgBox("Nom du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Emplacement à importer
Rsg = InputBox("Entrez l'emplacement à importer : ")
If (Rsg <> "") Then
MsgBox Rsg
End If
Text2 = Rsg
If (Text2 <> "") Then
Pathfic = Text2
Else
réponse = MsgBox("Emplacement du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Nom de la table d'importation n°1
Text3 = "Projets"
If (Text3 <> "") Then
NomTable = Text3
Else
réponse = MsgBox("Nom de la table d'importation manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Nom de la table d'importation n°2
Text4 = "Agents"
If (Text4 <> "") Then
NomTable2 = Text4
Else
réponse = MsgBox("Nom de la table d'importation n°2 manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Ouverture du classeur d'Importation
NomDuFichier.Workbooks.Open Pathfic & NomFic
MsgBox ("Le classeur d'importation est ouvert")
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 juin 2007 à 10:07
Salut,
Mais meme sans regarder ton fichier je peux te dire qu'il y a qquelques chose d'illogique.
Je te le mettais déjà dans le premier code que je t'avais écrit.
1- si tu récupère la valeur de Semaine_realisation depuis la cellule CX, ta valeur est alors dans la variable Semaine_realisation alors pourquoi subitement, tu essaie d'inserer la valeur contenue dans la variable VSemaine_realisation qui soit dit en passant est la premiere fois qu'on la voit.
2 - de plus tu récupère 6 valeurs alors que tu veux en insérer 7
3 - Regarde bien que je t'avais dit qu'un de tes champ n'etait pas autoincrement.
Voila réfléchis bien la dessus et moi j'essaierai de regarder ton fichier.
kido87
Messages postés39Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention29 juin 2007 21 juin 2007 à 10:12
ouai je vais regarder ça attentivement. A propos de mon champs qui n'est pas AutoIncrémenter (en l'occurence Num_projet) , il faudra que tu m'explique comment faire pour qu'il soit du type AutoIncrément....
kido87
Messages postés39Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention29 juin 2007 29 juin 2007 à 14:11
Bonjour, j'ai un nouveau problème. C'est avec la recuperation ligne par lignes des données d'un fichier choisit préalablement par l'utilisateur (fichier xls). Le code est actuellement le suivant:
j = 5 'on initialise j à 5 (Cellules vides avant la ligne 5)
With MaFeuilleDeDonnees
Do While Not IsEmpty(.Range("B" & CStr(j)))
je n'arrive à récuperer que la 1ere ligne du fichier xls.
J'ai donc un probleme de raisonnement, que je n'arrive pas à résoudre.
Je vous montre mon code en entier:
Sub Cmd_Importation_Click()
'On Error GoTo err
Dim Num_agent As Integer ' Numéro de l'agent 'AutoIncrement(pas de numéro d'agent)
Dim Nom_agent As String 'Nom de l'agent
Dim Num_projet As Integer 'Numéro du projet 'AutoIncrement (pas de numéro de projet)
Dim Semaine_realisation As String 'numéro de la semaine de réalisation
Dim Metier As String 'Métier
Dim Projet As String 'Nom du projet
Dim Description As String 'description de l'activité réalisée
Dim Tache As String 'Avancement (en pourcentage ou terminé)
Dim Temps_passe As Integer 'Temps_passé sur le projet (en h)
Dim SQL As String 'Variable qui permet de créer une table
Dim NomTable As String 'Nom de la table d'importation n°1
Dim NomTable2 As String 'Nom de la table d'importation n°2
Dim j As Integer 'Compteur
Dim NomDuFichier 'Nom du fichier à importer (insertion des cellule Excel)
Dim xls As Excel.Application 'Excel
Dim MonClasseur As Excel.Workbook 'Le classeur
Dim MaFeuilleDeDonnees As Excel.Worksheet 'la Feuille
'Dim CDialog As New MSComDlg.CommonDialog 'la boite de dialogue
Set CDialog = CreateObject("MSComDlg.CommonDialog")
Dim Dbs As Database
'###############################################
' Pour incrémenter de 1 ==> type autoIncrément
Num_agent = 0
Num_projet = 0
Num_agent = Num_agent + 1
Num_projet = Num_projet + 1
'###############################################
With CDialog
'Répertoire d'ouverture
.InitDir = "C:"
'Filtre sur les Classeur Excel
.Filter = "*.xls Classeur Excel|*.xls"
'Montre la boite de dialogue ouverture de fichier
.ShowOpen
'Récupère le chemin et le nom choisi
NomDuFichier = .Filename
End With
If NomDuFichier = vbNullString Then
Call MsgBox("Veuillez sélectionner un fichier", vbExclamation Or vbOKOnly, "Attention !!!")
Exit Sub
End If
Set Dbs CurrentDb 'CurrentDb> Suivi_activites
'Ouverture de l'application EXCEL
Set xls = New Excel.Application
'Ouverture du classeur Excel choisi plus haut par l'utilisateur
Set MonClasseur = xls.Workbooks.Open(NomDuFichier)
'Affectation de l'objet feuille
Set MaFeuilleDeDonnees = MonClasseur.Worksheets(1)
Call MsgBox("Le classeur d'importation est ouvert", vbInformation Or vbOKOnly)
j = 5 'on initialise j à 5 (Cellules vides avant la ligne 5)
With MaFeuilleDeDonnees
Do While Not IsEmpty(.Range("B" & CStr(j)))
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 29 juin 2007 à 15:21
Salut,
Euh...:
"je n'arrive à récuperer que la 1ere ligne du fichier xls." Puis dans le code:
"j = 5
'on initialise j à 5 (Cellules vides avant la ligne 5)" initialise j à 1 si tu veux commencer à la premiere ligne.
@+: Ju£i?n Pensez: Réponse acceptée
Vous n’avez pas trouvé la réponse que vous recherchez ?
kido87
Messages postés39Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention29 juin 2007 29 juin 2007 à 16:12
Il n'y a rien a récupérer avant la ligne 5. Je voulais dire que je ne recupere que la 1ere ligne de ce que je veux recuperer donc je ne recupere que la ligne 6.