A voir également:
- Importation fichier .txt dans excel
- Fichier rar - Guide
- Liste déroulante excel - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
28 réponses
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
17 oct. 2006 à 18:14
17 oct. 2006 à 18:14
Bonsoir,
c'est une bonne nouvelle!
je viens de me rendre compte qu'il existe une fonction VAL qui extrait le numérique d'une chaîne de caractères.
donc a priori la fonction vire_alpha() peut être remplacée par le VAL().
A+
c'est une bonne nouvelle!
je viens de me rendre compte qu'il existe une fonction VAL qui extrait le numérique d'une chaîne de caractères.
donc a priori la fonction vire_alpha() peut être remplacée par le VAL().
A+
Bonsoir,
J'attendais que quelqu'un s'intéresse à mon problème et ta réponse me fait plaisir car je suis bien embêtée. Ca fait quelques temps que j'ai envie d'apprendre le VBA et je crois que cette fois je vais me lancer.
J'espère que pour toi ce sera un jeu d'enfant. Ca me serait d'une aide très précieuse.
D'avance merci
Voici le code :
Option Explicit
Dim MonFichier As Variant
Public Monclasseur As String
Dim Nblig As Long, i As Long, j As Long
Public Monchemin As String
Sub Importation()
'
' Importation Macro
' Macro enregistrée le 27/06/2006 par SERMA
'
'
Dim MonFichier As Variant
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier <> False Then
Workbooks.OpenText Filename:=MonFichier, Origin:=xlWindows, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(17 _
, 1), Array(20, 1), Array(25, 1), Array(29, 1), Array(34, 1), Array(48, 1), Array(83, 1), _
Array(89, 1), Array(124, 1), Array(141, 1), Array(158, 1), Array(179, 1)), _
TrailingMinusNumbers:=True
ActiveSheet.Move Before:=Workbooks("Traitement global.xls").Sheets(1)
'aller derniere cellule
ActiveCell.SpecialCells(xlLastCell).Select
'recupere le n° de la ligne courante
Nblig = ActiveCell.Row + 1
Range("A1").Select
'suppression des lignes différentes d'une date
'mise d'une croix dans les lignes à garder
For i = 1 To Nblig
If IsDate(Cells(i, 1)) Then
Cells(i, 13).Value = "X"
Else
Cells(i, 13).Value = Empty
End If
Next i
'détruit les lignes
Range("A1").Select
j = 1
While ActiveCell.Row < Nblig
If Cells(j, 13).Value <> "X" Then
ActiveCell.EntireRow.Delete
Nblig = Nblig - 1
Else
j = j + 1
ActiveCell.Offset(1, 0).Select
End If
Wend
'détruit les colonnes
Columns("B:D").Delete Shift:=xlToLeft
Columns("D:E").Delete Shift:=xlToLeft
Columns("H:H").Delete Shift:=xlToLeft
Range("A1").Select
'lancer la macro de fusion des comptes
FusionneCompte
'lancer Ajout en tête
AjoutEntete
End If
End Sub
Sub FusionneCompte()
Range("A1").Select
Selection.CurrentRegion.Select
Nblig = Selection.Rows.Count
Range("A1").Select
Columns("B:B").Insert Shift:=xlToRight
Range("B1").FormulaR1C1 = "=RC[1]&RC[2]"
Range("B1").Select
Selection.Copy
For i = 2 To Nblig
Cells(i, 2).Select
ActiveSheet.Paste
Next i
Application.CutCopyMode = False
Range("A1").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Columns("C:D").Delete Shift:=xlToLeft
Range("A1").Select
End Sub
Sub AjoutEntete()
Rows("1:1").Insert Shift:=xlDown
Range("A1").Value = "DATEPIECE"
Range("B1").Value = "COMPTE"
Range("C1").Value = "LIBELLE"
Range("D1").Value = "DEBIT"
Range("E1").Value = "CREDIT"
Range("F1").Value = "PIECE"
Range("A1").Select
End Sub
Sub NettoyageListe()
Dim MaLigne As Integer
Dim MaRecup As String
Dim Machaine As String
'nettoyage de la liste des fichiers
Worksheets("Traitement").Select
Range("A10:A60").ClearContents
Range("A10").Select
MaLigne = 10
Machaine = Range("a2").Value & "*.xls"
MaRecup = Dir(Machaine)
While MaRecup <> ""
Cells(MaLigne, 1).Value = MaRecup
MaLigne = MaLigne + 1
MaRecup = Dir
Wend
End Sub
Sub VidageFichiers()
Dim Machaine As String
Worksheets("Traitement").Select
Range("A10").Select
While ActiveCell.Value <> Empty
Machaine = Range("a2").Value & ActiveCell.Value
Workbooks.Open Filename:=Machaine
Range("A1").Select
Selection.CurrentRegion.Select
Selection.ClearContents
Range("A1").Value = "DATEPIECE"
Range("B1").Value = "COMPTE"
Range("C1").Value = "LIBELLE"
Range("D1").Value = "DEBIT"
Range("E1").Value = "CREDIT"
Range("F1").Value = "PIECE"
Range("A1").Select
ActiveWorkbook.Close savechanges:=True
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Sub Colonnedate()
Columns("A:A").Select
Selection.NumberFormat = "dd/mm/yy"
End Sub
Cordialement
Catherine
J'attendais que quelqu'un s'intéresse à mon problème et ta réponse me fait plaisir car je suis bien embêtée. Ca fait quelques temps que j'ai envie d'apprendre le VBA et je crois que cette fois je vais me lancer.
J'espère que pour toi ce sera un jeu d'enfant. Ca me serait d'une aide très précieuse.
D'avance merci
Voici le code :
Option Explicit
Dim MonFichier As Variant
Public Monclasseur As String
Dim Nblig As Long, i As Long, j As Long
Public Monchemin As String
Sub Importation()
'
' Importation Macro
' Macro enregistrée le 27/06/2006 par SERMA
'
'
Dim MonFichier As Variant
MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier <> False Then
Workbooks.OpenText Filename:=MonFichier, Origin:=xlWindows, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(17 _
, 1), Array(20, 1), Array(25, 1), Array(29, 1), Array(34, 1), Array(48, 1), Array(83, 1), _
Array(89, 1), Array(124, 1), Array(141, 1), Array(158, 1), Array(179, 1)), _
TrailingMinusNumbers:=True
ActiveSheet.Move Before:=Workbooks("Traitement global.xls").Sheets(1)
'aller derniere cellule
ActiveCell.SpecialCells(xlLastCell).Select
'recupere le n° de la ligne courante
Nblig = ActiveCell.Row + 1
Range("A1").Select
'suppression des lignes différentes d'une date
'mise d'une croix dans les lignes à garder
For i = 1 To Nblig
If IsDate(Cells(i, 1)) Then
Cells(i, 13).Value = "X"
Else
Cells(i, 13).Value = Empty
End If
Next i
'détruit les lignes
Range("A1").Select
j = 1
While ActiveCell.Row < Nblig
If Cells(j, 13).Value <> "X" Then
ActiveCell.EntireRow.Delete
Nblig = Nblig - 1
Else
j = j + 1
ActiveCell.Offset(1, 0).Select
End If
Wend
'détruit les colonnes
Columns("B:D").Delete Shift:=xlToLeft
Columns("D:E").Delete Shift:=xlToLeft
Columns("H:H").Delete Shift:=xlToLeft
Range("A1").Select
'lancer la macro de fusion des comptes
FusionneCompte
'lancer Ajout en tête
AjoutEntete
End If
End Sub
Sub FusionneCompte()
Range("A1").Select
Selection.CurrentRegion.Select
Nblig = Selection.Rows.Count
Range("A1").Select
Columns("B:B").Insert Shift:=xlToRight
Range("B1").FormulaR1C1 = "=RC[1]&RC[2]"
Range("B1").Select
Selection.Copy
For i = 2 To Nblig
Cells(i, 2).Select
ActiveSheet.Paste
Next i
Application.CutCopyMode = False
Range("A1").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Columns("C:D").Delete Shift:=xlToLeft
Range("A1").Select
End Sub
Sub AjoutEntete()
Rows("1:1").Insert Shift:=xlDown
Range("A1").Value = "DATEPIECE"
Range("B1").Value = "COMPTE"
Range("C1").Value = "LIBELLE"
Range("D1").Value = "DEBIT"
Range("E1").Value = "CREDIT"
Range("F1").Value = "PIECE"
Range("A1").Select
End Sub
Sub NettoyageListe()
Dim MaLigne As Integer
Dim MaRecup As String
Dim Machaine As String
'nettoyage de la liste des fichiers
Worksheets("Traitement").Select
Range("A10:A60").ClearContents
Range("A10").Select
MaLigne = 10
Machaine = Range("a2").Value & "*.xls"
MaRecup = Dir(Machaine)
While MaRecup <> ""
Cells(MaLigne, 1).Value = MaRecup
MaLigne = MaLigne + 1
MaRecup = Dir
Wend
End Sub
Sub VidageFichiers()
Dim Machaine As String
Worksheets("Traitement").Select
Range("A10").Select
While ActiveCell.Value <> Empty
Machaine = Range("a2").Value & ActiveCell.Value
Workbooks.Open Filename:=Machaine
Range("A1").Select
Selection.CurrentRegion.Select
Selection.ClearContents
Range("A1").Value = "DATEPIECE"
Range("B1").Value = "COMPTE"
Range("C1").Value = "LIBELLE"
Range("D1").Value = "DEBIT"
Range("E1").Value = "CREDIT"
Range("F1").Value = "PIECE"
Range("A1").Select
ActiveWorkbook.Close savechanges:=True
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Sub Colonnedate()
Columns("A:A").Select
Selection.NumberFormat = "dd/mm/yy"
End Sub
Cordialement
Catherine
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 20:06
15 oct. 2006 à 20:06
Bon,
ça semble Ok
ceci dit, je n'ai pas d'erreurs sur les dates même sans le local:=true
A+
ça semble Ok
ceci dit, je n'ai pas d'erreurs sur les dates même sans le local:=true
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
16 oct. 2006 à 13:32
16 oct. 2006 à 13:32
Bonjour,
1) l'envie
2) les livres
3) les formations
4) la touche F1
5) les forums :
1) l'envie
2) les livres
3) les formations
4) la touche F1
5) les forums :
https://www.excel-downloads.com/forums/forum-excel.7/ http://www.cathyastuce.com/w-agora/index.php?site=cathyastuce https://forum.hardware.fr/hfr/Programmation/liste_sujet-1.htm www.veriti.net
6) Google pour voir le monde
7) du temps
bon courage et bienvenue
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
14 oct. 2006 à 13:58
14 oct. 2006 à 13:58
Bonjour,
qu'attends-tu pour mettre ton code et un peu de tes données !!
à première vue, ça n'a pas l'air très sorcier.
tu devrais même pouvoir t'en tirer seul en enregistrant une macro lorsque tu fais l'opération manuellement.
à te lire
qu'attends-tu pour mettre ton code et un peu de tes données !!
à première vue, ça n'a pas l'air très sorcier.
tu devrais même pouvoir t'en tirer seul en enregistrant une macro lorsque tu fais l'opération manuellement.
à te lire
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 02:45
15 oct. 2006 à 02:45
Bonsoir,
je pense que le fait de rajouter Local:=True à la fin de la méthode OpenText de ta 1ère procédure (importation()) devrait solutionner tes problèmes.
Si ça ne suffit pas, mettre Array(0, 4) comme premier argument du Fieldinfo de l'OpenText
en regardant cette procédure, je me suis dit qu'il serait possible de la simplifier à 2 niveaux :
1) la méthode opentext permet de sauter des colonnes et de formater les colonnes
2) plutôt que de marquer les lignes sans date par des X pour ensuite les supprimer, pourquoi ne pas le faire tout de suite.
ça donnerait alors :
à toi de tester donc.
A+
je pense que le fait de rajouter Local:=True à la fin de la méthode OpenText de ta 1ère procédure (importation()) devrait solutionner tes problèmes.
Si ça ne suffit pas, mettre Array(0, 4) comme premier argument du Fieldinfo de l'OpenText
en regardant cette procédure, je me suis dit qu'il serait possible de la simplifier à 2 niveaux :
1) la méthode opentext permet de sauter des colonnes et de formater les colonnes
2) plutôt que de marquer les lignes sans date par des X pour ensuite les supprimer, pourquoi ne pas le faire tout de suite.
ça donnerait alors :
Sub Importation_bis() ' Importation Macro ' Macro enregistrée le 27/06/2006 par SERMA ' modif ODVJ le 15/10/2006 Dim MonFichier As Variant MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt") If MonFichier <> False Then 'le 2ème argument de chaque array du fieldinfo a pour signification : '==== 9 : colonne non distribuée '==== 3 : date au format J/M/A '==== 1 : format standard 'local=:True permet d'utiliser les paramètres internationaux du système 'c'est ce qui doit régler ton pb Workbooks.OpenText Filename:=MonFichier, Origin:=xlWindows, _ StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 4), Array(17 _ , 9), Array(20, 9), Array(25, 9), Array(29, 1), Array(34, 1), Array(48, 9), Array(83, 9), _ Array(89, 1), Array(124, 1), Array(141, 1), Array(158, 1), Array(179, 9)), _ TrailingMinusNumbers:=True, local:=True 'ActiveSheet.Move Before:=Workbooks("Traitement global.xls").Sheets(1) 'recupere le n° de la ligne courante Nblig = ActiveCell.SpecialCells(xlLastCell).Row Range("A1").Select 'suppression des lignes différentes d'une date i = 1 While i <= Nblig If Not (IsDate(Cells(i, 1))) Then Cells(i, 13).EntireRow.Delete Nblig = Nblig - 1 Else i = i + 1 End If Wend Range("A1").Select 'lancer la macro de fusion des comptes FusionneCompte 'lancer Ajout en tête AjoutEntete End If End SubVoilà. Pour tester cette procédure, j'aurais eu besoin de quelques lignes de tes données.
à toi de tester donc.
A+
Bonjour,
Je ne sais pas si je vais pouvoir tester la modif aujourd'hui, je me suis envoyé du bureau chez moi par mail le fichier txt et le fichier xls contenant la macro. Lorsque je lance la procédure chez moi, j'ai le message suivant :
TrailingMinusNumbers:= (Tout cela en surbrillance)
Message : Erreur de compilation - Argument nommé introuvable
Cet argument en clair c'est ?
Je pense que je n'ai pas déterminé le bon chemin de mes données sur C:
D'autre part, je voudrais bien t'envoyer mes données mais je ne peux pas mettre mon fichier txt sur le forum.
Un grand merci, je te t'informe de la suite dès que possible
Cordialement
Catherine
Je ne sais pas si je vais pouvoir tester la modif aujourd'hui, je me suis envoyé du bureau chez moi par mail le fichier txt et le fichier xls contenant la macro. Lorsque je lance la procédure chez moi, j'ai le message suivant :
TrailingMinusNumbers:= (Tout cela en surbrillance)
Message : Erreur de compilation - Argument nommé introuvable
Cet argument en clair c'est ?
Je pense que je n'ai pas déterminé le bon chemin de mes données sur C:
D'autre part, je voudrais bien t'envoyer mes données mais je ne peux pas mettre mon fichier txt sur le forum.
Un grand merci, je te t'informe de la suite dès que possible
Cordialement
Catherine
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 12:37
15 oct. 2006 à 12:37
Bonjour,
curieux, ça passe chez moi sans problème.
tu peux utiliser Cjoint pour monter tes données et ton classeur.
si c'est la confidentialité qui te gêne, change les infos tout en gardant la structure du txt bien sûr.
le trailing minusmachin c'est pour le positionnement du signe négatif à droite des nombres. en fait ça ne doit pas te servir et tu peux le virer.
au fait, tu as bien un caractère _ en fin de ligne précédente !
A+
curieux, ça passe chez moi sans problème.
tu peux utiliser Cjoint pour monter tes données et ton classeur.
si c'est la confidentialité qui te gêne, change les infos tout en gardant la structure du txt bien sûr.
le trailing minusmachin c'est pour le positionnement du signe négatif à droite des nombres. en fait ça ne doit pas te servir et tu peux le virer.
au fait, tu as bien un caractère _ en fin de ligne précédente !
A+
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 12:39
15 oct. 2006 à 12:39
autre question, le dernier paramètre, le local:=true, tu l'as bien mis avec := et non pas = simplement
A+
A+
Bonsoir,
Je voudrais bien envoyer un extrait de mon fichier txt ainsi que mon fichier xls mais je ne sais pas où le joindre.
J'ai bien le caractère _ en fin de ligne précédente et j'ai bien mis local:=true
A +
Cordialement
Catherine
Je voudrais bien envoyer un extrait de mon fichier txt ainsi que mon fichier xls mais je ne sais pas où le joindre.
J'ai bien le caractère _ en fin de ligne précédente et j'ai bien mis local:=true
A +
Cordialement
Catherine
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 19:04
15 oct. 2006 à 19:04
Bonsoir,
tu peux utiliser https://www.cjoint.com/
A+
tu peux utiliser https://www.cjoint.com/
A+
https://www.cjoint.com/?kptFISgdpE
https://www.cjoint.com/?kptKDHPA61
Je tente d'envoyer mes fichiers, dont le fichier txt épuré. J'espère que ça va marcher.
J'ai enlevé les 3 premières lignes comportant le nom de la société et la source du fichier.
J'ai modifieé les noms des tiers Je crois que par erreur j'ai également supprimé la dernière colonne du fichier.
J'espère que ces deux fichiers seront exploitable pour toi
Merci encore
Cordialement
Catherine
https://www.cjoint.com/?kptKDHPA61
Je tente d'envoyer mes fichiers, dont le fichier txt épuré. J'espère que ça va marcher.
J'ai enlevé les 3 premières lignes comportant le nom de la société et la source du fichier.
J'ai modifieé les noms des tiers Je crois que par erreur j'ai également supprimé la dernière colonne du fichier.
J'espère que ces deux fichiers seront exploitable pour toi
Merci encore
Cordialement
Catherine
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 19:55
15 oct. 2006 à 19:55
Bonsoir,
à première vue, il manque un s à number
je continue à regarder
A+
à première vue, il manque un s à number
je continue à regarder
A+
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 oct. 2006 à 19:58
15 oct. 2006 à 19:58
Bonsoir,
ensuite, le Workbooks("Traitement global.xls").Sheets(1) doit planter car le fichier concerné n'a pas d'espace : Traitementglobal.xls.
A+
ensuite, le Workbooks("Traitement global.xls").Sheets(1) doit planter car le fichier concerné n'a pas d'espace : Traitementglobal.xls.
A+
Bonjour,
J'ai testé en arrivant au bureau, CA MARCHE !!!
Chez moi, j'avais reconstitué les dossiers et fichiers de mémoire et j'ai du faire erreur quelque part.
Effectivement, ça marche sans le local:=True, j'ai seulement modifié le 1er Array(0,4)
Un grand coup de chapeau, un grand merci et certainement à une autre fois car je crois que je vais me lancer, je pense que ça ne sera pas sans mal. Si tu as un conseil à me donner pour démarrer, il sera le bienvenu.
Cordialement
Catherine
J'ai testé en arrivant au bureau, CA MARCHE !!!
Chez moi, j'avais reconstitué les dossiers et fichiers de mémoire et j'ai du faire erreur quelque part.
Effectivement, ça marche sans le local:=True, j'ai seulement modifié le 1er Array(0,4)
Un grand coup de chapeau, un grand merci et certainement à une autre fois car je crois que je vais me lancer, je pense que ça ne sera pas sans mal. Si tu as un conseil à me donner pour démarrer, il sera le bienvenu.
Cordialement
Catherine
Bonour,
Je croyais mon affaire résolue et je viens de me rendre compte que j'ai encore un pb sur le n° de pièce (le 12ème array) car j'ai des cellules qui comportent des chiffres et des lettres, le tout en format texte.
Quel code faut-il utilisé en 2ème argument sur "l'array n° 12" pour solutionner le pb ?
Désolée, j'étais tellement contente que je me suis focalisée sur les dates et j'ai oublié de vérifier le reste. J'ai 3500 lignes dans mon fichier !!!
A +
Cordialement
Catherine
Je croyais mon affaire résolue et je viens de me rendre compte que j'ai encore un pb sur le n° de pièce (le 12ème array) car j'ai des cellules qui comportent des chiffres et des lettres, le tout en format texte.
Quel code faut-il utilisé en 2ème argument sur "l'array n° 12" pour solutionner le pb ?
Désolée, j'étais tellement contente que je me suis focalisée sur les dates et j'ai oublié de vérifier le reste. J'ai 3500 lignes dans mon fichier !!!
A +
Cordialement
Catherine
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
16 oct. 2006 à 18:17
16 oct. 2006 à 18:17
Bonjour,
quel problème as-tu?
A+
quel problème as-tu?
A+
Bonsoir,
En fait la procédure mise en place par le formateur est un peu complexe.
Les fichiers générés par la procédure que tu viens de m'aider à corriger, ou plutôt que tu viens de corriger, sont transférés en tables attachées dans Access. Le problème est que dans excel, les données de la colonne "PIECE" sont en format standard avec des cellules composées uniquement de chiffres et d'autres avec des chiffres et des lettres. Dans Access, le format déterminé automatiquement est numérique, donc toutes les cellules contenant des lettres sont en erreur et comme la table est attachée, je ne peux pas modifier le format de champ, les champs étant définis dans la base de données externes.
Je pense qu'il faudrait compléter la macro excel afin que les lettres contenues dans la colonne "PIECE" soient exclues.
Tu vois mon problème, mais j'ai l'impression d'abuser un peu.
Mon gros problème est surtout que je n'ai pas trop le temps d'attendre de me former, de surcroît seule, pour résoudre cela, j'ai un très gros travail de consolidation comptable à faire sur 5 sociétés.
D'avance merci
Cordialement
Catherine
En fait la procédure mise en place par le formateur est un peu complexe.
Les fichiers générés par la procédure que tu viens de m'aider à corriger, ou plutôt que tu viens de corriger, sont transférés en tables attachées dans Access. Le problème est que dans excel, les données de la colonne "PIECE" sont en format standard avec des cellules composées uniquement de chiffres et d'autres avec des chiffres et des lettres. Dans Access, le format déterminé automatiquement est numérique, donc toutes les cellules contenant des lettres sont en erreur et comme la table est attachée, je ne peux pas modifier le format de champ, les champs étant définis dans la base de données externes.
Je pense qu'il faudrait compléter la macro excel afin que les lettres contenues dans la colonne "PIECE" soient exclues.
Tu vois mon problème, mais j'ai l'impression d'abuser un peu.
Mon gros problème est surtout que je n'ai pas trop le temps d'attendre de me former, de surcroît seule, pour résoudre cela, j'ai un très gros travail de consolidation comptable à faire sur 5 sociétés.
D'avance merci
Cordialement
Catherine
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
16 oct. 2006 à 23:07
16 oct. 2006 à 23:07
Bonsoir,
tu vois, ce que tu dis n'est pas assez précis :
veux-tu que simplement le champs pièces soit effacé uniquement s'il contient de l'alphanumérique?
ou veux-tu que l'enregistrement complet soit supprimé si le champs pièces contient de l'alphanumérique?
le dernier cas est très simple vu qu'il ressemble à l'exclusion des enregistrements dont la première colonne n'est pas une date :
le premier cas (je pense qu'il ne t'intéresse pas) se règlerait par le code suivant :
méfiance cependant si le champs d'accueil n'accepte pas les valeurs vides (empty). il faudrait alors plutôt mettre un 0.
A+
tu vois, ce que tu dis n'est pas assez précis :
veux-tu que simplement le champs pièces soit effacé uniquement s'il contient de l'alphanumérique?
ou veux-tu que l'enregistrement complet soit supprimé si le champs pièces contient de l'alphanumérique?
le dernier cas est très simple vu qu'il ressemble à l'exclusion des enregistrements dont la première colonne n'est pas une date :
For i = 1 To Nblig If IsDate(Cells(i, 1)) And IsNumeric(Cells(i, 12)) Then Cells(i, 13).Value = "X" Else Cells(i, 13).Value = Empty End If Next ilà, on garde (ie on met un "X" en colonne 13) ce qui est date en première colonne et numérique en 12ème
le premier cas (je pense qu'il ne t'intéresse pas) se règlerait par le code suivant :
For i = 1 To Nblig If IsDate(Cells(i, 1)) Then Cells(i, 13).Value = "X" If Not (IsNumeric(Cells(i, 12))) Then Cells(i, 12) = Empty Else Cells(i, 13).Value = Empty End If Next i
méfiance cependant si le champs d'accueil n'accepte pas les valeurs vides (empty). il faudrait alors plutôt mettre un 0.
A+