Erreur imporatation des données

Résolu/Fermé
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017 - 11 janv. 2016 à 22:40
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 14 janv. 2016 à 06:59
Bonjour ,

voici mon code en bas qui me permet de transférer des donnèes dèja traitès d'une autre feuille vers la feuille ouverte , mon probleme c'est que quand je l'ai essayé avec un nouveau fichier excel , parfois il marche et parfois non voici le message d'erreur que je recois quand il n'importe pas les données ; Object variable or with block variable not set
  Dercol = .Rows(2).Find(what:="*", searchdirection:=xlPrevious).Column 


Option Explicit
Option Base 1
'--------
Sub Importdatav2()
Dim Source As Workbook, Dercol As Integer
Dim Nbre As Integer, Tablo, Cptr As Integer, derlig As Integer, Lig As Integer, Col As Integer
Dim FichiersAOuvrir, I As Integer

Application.ScreenUpdating = False

FichiersAOuvrir = Application.GetOpenFilename(, , , , True)
If IsArray(FichiersAOuvrir) Then
For I = LBound(FichiersAOuvrir, 1) To UBound(FichiersAOuvrir, 1)
Set Source = Application.Workbooks.Open(FichiersAOuvrir(I), , True)
With Sheets("Workload - Charge de travail")
Dercol = .Rows(2).Find(what:="*", searchdirection:=xlPrevious).Column
Nbre = Application.CountIf(.Columns("AQ"), "XX")
ReDim Tablo(Nbre, Dercol)
Lig = 1
For Cptr = 1 To Nbre
Lig = .Columns("AQ").Find("XX", .Cells(Lig, "AQ"), xlValues).Row
For Col = 1 To Dercol
Tablo(Cptr, Col) = .Cells(Lig, Col)
Next Col
Next Cptr
End With
Source.Close False

With ThisWorkbook.Sheets("Sheet1")
derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1 'premiere cellules vide colonne A
.Range("A" & derlig).Resize(Cptr, Dercol) = Tablo
'.Activate
End With




Next I
Else
MsgBox "Aucun choix"
End If
End Sub


1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
12 janv. 2016 à 07:58
Bonjour,

https://forums.commentcamarche.net/forum/affich-37622001-vba-detection-de-cellule-vide-ligne-colonnne

vous y trouvrez entre autre ceci:

La méthode Find

Dim Col As Integer
Col = Rows(3).Find("*", , , , xlByRows, xlPrevious).Column

ou :

Dim Col As Integer
Col = Rows(3).Find("", , , , xlByRows, xlNext).Column


Attention aux cellules vides...
1
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
13 janv. 2016 à 14:46
Merci pour votre réponse , malheureusement je dois traiter aussi des cellules vides , est ce que cela ait un impact sur le transfert des données ?
0
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
13 janv. 2016 à 15:20
je l'ai bien essayé ca m'affiche toujours le meme message d'erreur , par contre il fonctionne trés bien avec les autres fichiers
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
13 janv. 2016 à 15:41
Bonjour,

je dois traiter aussi des cellules vides votre ligne d'instruction

Dercol = .Rows(2).Find(what:="*", searchdirection:=xlPrevious).Column


est en erreur si la ligne est vide

essayez ceci

dercol = Cells(2, Columns.Count).End(xlToLeft).Column

si dercol=1 c'est que la ligne est vide sauf peut-etre la premiere cellule
0
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
13 janv. 2016 à 16:30
Merci Beaucoup ca fonctionne trés bien y'a til une façon pour éviter les N/A (s'apparaissent seulement aprés le transfert )
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
Modifié par f894009 le 13/01/2016 à 16:54
Re,

Normalement c'est cette ligne qui provoque la chose:

.Range("A" & derlig).Resize(Cptr, Dercol) = Tablo


Les N/A apparaissent en colonnes ou en lignes ??
Vos donnees sont correctement restituees ???
0