erreur sur macro

gege21

XLDnaute Occasionnel
bonjours a tous
j'ai des erreur sur 2 macro et je ne c pas pourquoi
sur les macro "date_heurs" et "transfaire"
 

Pièces jointes

  • teste41.xls
    189 KB · Affichages: 63
  • janv.10log.zip
    16.4 KB · Affichages: 38
  • janv.10log.zip
    16.4 KB · Affichages: 31
  • janv.10log.zip
    16.4 KB · Affichages: 36

Papou-net

XLDnaute Barbatruc
Re : erreur sur macro

Bonsoir gege21,

Apparemment, l'erreur sur la macro Transfaire est due au fait que la feuille 'données' est vide.
Quant à la macro 'date_heure', tu dois la déplacer dans Module1. Tu ne peux pas appeler une macro située dans un module de feuille depuis un userform

Espérant t'avoir aidé.

Cordialement.
 

job75

XLDnaute Barbatruc
Re : erreur sur macro

Bonjour gege21, salut Pierrot,

alors pourquoi sa ne marche pas ???

Bah le code était très bancal, voyez mes commentaires :

Code:
Sub date_heurs()
' ---------------------------
' - insertion date et heurs -
' -        colonne c        -
' ---------------------------
  Dim x As Long, i As Long, t, TT() As Double 'job75 : déclaré Double (pas As Date)
  Application.ScreenUpdating = False
  With Sheets("Données_brute")
    .Columns(3).Insert
    x = .Columns(1).SpecialCells(xlCellTypeConstants, 1).Count 'job75 : mettre des dates en colonne A...
    t = .Range("A2:B" & x + 1) 'job75 : enlevé Set, et manquait + 1 (on commence en ligne 2)
    ReDim TT(1 To x) 'job7 : manquait 1 To...
    For i = 1 To x
      TT(i) = t(i, 1) + t(i, 2) 'job75 : CDate était inutile...
    Next
    .Range("C1:C" & x) = Application.Transpose(TT) 'job75 : en ligne 1, sûr ?
    .Columns(3).NumberFormat = "dd/mm/yyyy hh:mm"
    .Columns(3).AutoFit
  End With
  'Call Module1.Transfaire 'mis en commentaire pour tester
End Sub
Maintenant il fonctionne :)

A+
 

job75

XLDnaute Barbatruc
Re : erreur sur macro

Re,

Vous ne croyez pas que ceci est plus simple :

Code:
Sub date_heurs()
' ---------------------------
' - insertion date et heurs -
' -        colonne c        -
' ---------------------------
  Application.ScreenUpdating = False
  With Sheets("Données_brute")
    .Columns(3).Insert
    .Columns(1).Copy .Columns(3)
    .Columns(2).Copy
    .Columns(3).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd 'addition
    .Columns(3).NumberFormat = "dd/mm/yyyy hh:mm"
    .Columns(3).AutoFit
  End With
  'Call Module1.Transfaire 'mis en commentaire pour tester
End Sub
Avec ce code on fait moins d'erreurs :)

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : erreur sur macro

Re,

Bon, j'ai testé en utilisant le fichier janv.10log.txt.

Voici les 2 macros que je propose finalement :

Code:
Sub date_heurs()
' ---------------------------
' - insertion date et heurs -
' -        colonne c        -
' ---------------------------
  Application.ScreenUpdating = False
  With Sheets("Données_brute")
    .Columns(3).Insert
    .Columns(1).Copy .Columns(3)
    .Columns(2).Copy
    .Columns(3).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd 'addition
    .Columns(3).NumberFormat = "dd/mm/yyyy hh:mm"
    .Columns("D:E").NumberFormat = "General" 'sinon elles ont le format Date
    .Columns.AutoFit
  End With
  Call Transfaire
End Sub
Code:
Sub Transfaire() 'Je préfèrerais Transfert...
Dim sh As Worksheet, deb&, i&, j%, P As Boolean
'Application.Calculation = -4135 'paraît tout à fait inutile...
Set sh = Sheets("données_brute")
With Sheets("données")
  deb = IIf(.[A1] = "", 1, .[A65536].End(xlUp).Row + 1)
  sh.UsedRange.Copy .Cells(deb, 1)
  .Columns.AutoFit 'dimensionnement des colonnes
  .Cells.Sort .[C1], xlAscending, Header:=xlGuess
  'suppression des lignes doublons
  For i = .[A65536].End(xlUp).Row To 2 Step -1
    P = True
    For j = 1 To 26
    If .Cells(i, j) <> .Cells(i - 1, j) Then P = False: Exit For
    Next
    If P Then .Rows(i).Delete
  Next
End With
'Application.Calculation = -4105
Sheets("Données_brute").Cells.Delete
End Sub
Il y a aussi une ligne pas terrible dans le code de l'UserForm, je vous laisse corriger :

Code:
For i = 1 To .[A1].End(xlUp).Row
A+
 

gege21

XLDnaute Occasionnel
Re : erreur sur macro

bonjours Pierrot93,job75

génial sa marche a la perfection

job75 pour

Code:
For i = 1 To .[A1].End(xlUp).Row

j'ai mis
Code:
For i = 1 To 1

mais ne serait il pas plus simple d'aller directement dans le txtbox4 ???
mais la je ne c pas du tous comment
 

job75

XLDnaute Barbatruc
Re : erreur sur macro

Re,

Dans la macro CommandButton1_Click (bouton Téléchargement) de l'USF, si vous téléchargez un seul fichier à la fois :

- la boucle For i...Next ne sert plus à rien, supprimez-la

- la variable strFile ne sert à rien, remplacez-la par TextBox4

Et vous pouvez aussi supprimer la macro TextBox4_Change.

Là c'est plus qu'élémentaire dites donc...

A+
 

gege21

XLDnaute Occasionnel
Re : erreur sur macro

juste pour ne pas faire un code bancale n'ai-ai pas fais d'erreur
(je pense pas vu que sa marche mais ont en c jamais )

Code:
Private Sub CommandButton1_Click()
Dim strPath$, strFile$, i As Long
strPath = UserForm2.Données_txt.Value
With ThisWorkbook.Sheets(1)
'For i = 1 To 1 '.[A1].End(xlUp).Row  ne sert plus a rien
'strFile = .Cells(i, 1).Text ne sert plus a rien et devient=>
strFile = UserForm2.TextBox4.Value
 Application.ScreenUpdating = False
        With ActiveWorkbook.Worksheets("Données_brute")
            With .QueryTables.Add(Connection:="TEXT;" & strPath & strFile, _
                Destination:=.[A65536].End(xlUp).Offset)
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileSemicolonDelimiter = True
                .TextFileColumnDataTypes = Array(1)
                .Refresh BackgroundQuery:=False
            End With
            .[a1].CurrentRegion.Columns.AutoFit
        End With
       ' Next i  ne sert plus a rien
        End With
Application.ScreenUpdating = False
Call Feuil7.date_heurs
End
End Sub
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS