Erreur étrange

Résolu/Fermé
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016 - Modifié par crapoulou le 5/04/2016 à 16:03
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016 - 5 avril 2016 à 17:15
Bonjour,

J'ai un problème étrange j'ai 2 boutons pas sur la même feuille qui exécute la même fonction et l'un des deux fait crash la fonction, or c'est le bouton sur la feuille importante qui plante. Je pense que le bouton ne doit pas avoir accès à certaine chose sur l'autre feuille et ça plante, pourtant j'ai (normalement) préciser les feuilles sur lesquels je travaille.

'Import du CSV + suppresion colonne superflu
Option Explicit
Sub Bouton1_Clic()
Dim nbligne1 As Integer
Dim myRange As Range
Dim cell As Range
Dim i&, FSO As Object, Fichier As Object, TMP() As String, path As String
Dim lastLigneF2 As Long
Dim LigneF1 As Integer
Dim LigneF3 As Integer
Dim lastLigneF1 As Long, lastLigneF3 As Long
Dim sh2 As Range, sh1 As Range, c As Range, d As Range
Dim valeur1 As String, valeur2 As String
Dim sh3 As Range, e As Range
Dim mois As String: mois = "C.A. HT          "
Dim colonneF1 As String

'import CSV

path = Application.GetOpenFilename("Text Files (*.csv), *.csv", 1, "Fichier CSV Requis")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Fichier = FSO.OpenTextFile(path)
Application.ScreenUpdating = False
lastLigneF2 = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
Do
    i = i + 1
    TMP = Split(Fichier.ReadLine, ";")
    Cells(i, 1).Resize(1, UBound(TMP) + 1) = TMP
Loop While Not Fichier.AtEndOfStream
  'Suppresion colonne superflu
Set myRange = Sheets("Feuil1").Range("T7:T" & lastLigneF2)
    For Each cell In myRange
        If cell.Value = "CUMUL" Then cell.EntireRow.Delete
    Next

Set sh3 = Sheets("Tri Alpha").Range("D2:O2")
mois = mois + InputBox("Quelle mois ? : ")
For Each c In sh3
    'MsgBox (StrComp(mois, c.Value, vbTextCompare) = 0)
    If (StrComp(mois, c.Value, vbTextCompare) = 0) Then
        colonneF1 = Split(c.Address, "$")(1)
    End If
Next

lastLigneF1 = Sheets("Tri Alpha").Range("B" & Rows.Count).End(xlUp).Row
lastLigneF3 = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
Set sh1 = Sheets("Tri Alpha").Range("B6:B" & lastLigneF1)
Set sh2 = Sheets("Feuil1").Range("B7:B" & lastLigneF3)

For Each e In sh1
    LigneF1 = e.Row
    valeur1 = e.Value
    For Each d In sh2
        LigneF3 = d.Row
        valeur2 = d.Value
        'MsgBox (StrComp(valeur1, valeur2, vbTextCompare) = 0)
        If (StrComp(valeur1, valeur2, vbTextCompare) = 0) Then
            'Worksheets(1).Range("F" & LigneF1) = Worksheets(3).Range("Z" & LigneF3)
            Worksheets(1).Range(colonneF1 & LigneF1) = Round(CLng(Worksheets(3).Range("Z" & LigneF3)))
        End If
    Next
Next
Application.ScreenUpdating = True
End Sub

1 réponse

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
5 avril 2016 à 17:00
Bonjour,

sans fichier pour tester, sans savoir ce que tu veux faire et sans indication de la ligne en erreur ça va tenir de la divination...
Déjà pour qu'elle n'ai pas la même réaction je me dis que tu as dû la mettre dans un module feuille et non un module standard, ou que tu utilises la feuille active sans savoir si c'est la bonne.
Dans la même ligne tu ne spécifies jamais le classeur, es-tu sûr de t'adresser au bon à chaque fois ?
eric
0
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016
5 avril 2016 à 17:15
C'est le même classeur mais pas la même feuille. Mais pas de problème j'ai trouver au final :

 Sheets("Feuil1").Cells(i, 1).Resize(1, UBound(TMP) + 1) = TMP


j'ai oublié de préciser ou importer le csv du coup il écrasait la page courante. il suffisait de rajouter
Sheets("Feuil1")
0