Erreur imporatation des données [Résolu/Fermé]

Signaler
Messages postés
123
Date d'inscription
vendredi 2 octobre 2015
Statut
Membre
Dernière intervention
3 mars 2017
-
f894009
Messages postés
15007
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 février 2020
-
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

Messages postés
15007
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 février 2020
1 222
Bonjour,

http://www.commentcamarche.net/faq/32220-vba-toutes-versions-detection-de-cellule-vide-ligne-colonne

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86874 internautes nous ont dit merci ce mois-ci

r4944
Messages postés
123
Date d'inscription
vendredi 2 octobre 2015
Statut
Membre
Dernière intervention
3 mars 2017

ils aparaissent en ligne mais il reste dans l'ancien fichier , mais dans le nouveau fichier d'imporation des données je recois toujours toute une ligne pleine de N/A aprés le transfert des données
r4944
Messages postés
123
Date d'inscription
vendredi 2 octobre 2015
Statut
Membre
Dernière intervention
3 mars 2017

Merci beaucoup pour votre temps @f894009 :))
f894009
Messages postés
15007
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 février 2020
1 222 > r4944
Messages postés
123
Date d'inscription
vendredi 2 octobre 2015
Statut
Membre
Dernière intervention
3 mars 2017

Re
Serait-il possible d'avoir un fichier source des donnees pour mieux appréhender votre probleme ou à défaut un modèle?
r4944
Messages postés
123
Date d'inscription
vendredi 2 octobre 2015
Statut
Membre
Dernière intervention
3 mars 2017

ouii sure comment je pourrais faire un upload ?
f894009
Messages postés
15007
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 février 2020
1 222 > r4944
Messages postés
123
Date d'inscription
vendredi 2 octobre 2015
Statut
Membre
Dernière intervention
3 mars 2017

Bonjour,

avant mettre le fichier a dispo, essyez ceci:
.Range("A" & derlig).Resize(Cptr, Dercol) = Application.Transpose(Tablo)

et si pas bon alors:

Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...