Qualificateur incorrect

Résolu/Fermé
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014 - 9 oct. 2013 à 15:21
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 15 oct. 2013 à 07:37
Bonjour,


Je suis en train de plancher (grâce à l'aide de quelque uns d'entre vous) sur une macro assez fastidieurse et à mon grand regret je tombe sur une erreur que je ne connaissais pas "qualificateur incorrect" à cette ligne de code :

Do While Not (IsEmpty(shSUIVI).Cells(j, 2))

Y voyez vous une erreur de synthaxe ou autre ?


Vous trouverez le lien de la macro ci-dessous :

https://www.cjoint.com/?CJjpuFuM4H3


Merci d'avance pour votre aide.

29 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 9/10/2013 à 16:01
Re Bonjour Tom 44


cela devrait aller:

Do While Not IsEmpty(shSUIVI.Cells(j, 2))


mais,

With NomFichier -----> la cela ne cadre pas, parce que NomFicher n'est pas declare en variable Public ou Global,donc sauf erreur de ma part NomFichier dans ce module de code est vide et si vous declarez cette variable public, vous avez le chemin et le nom du fichier

A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
9 oct. 2013 à 16:27
Rebonjour,

Comme vous l'aurez compris votre macro d'ouverture fonctionne à merveille, mais je ne parvients pas à définir ce fichier comme la source de mes données dans ma première boucle ...

Auriez vous là aussi une manière de me dépanner ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 9/10/2013 à 17:31
Re,

Oui. Je regarde la chose.

Worksheets("sites") est un onglet du fichier xls ouvert apres recherche ???

A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
9 oct. 2013 à 17:46
Oui tout à fait.
C'est d'ailleurs le seul onglet du classeur.

Cdt,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
9 oct. 2013 à 17:55
Re,


code modifier:



Public NomFichier As String
Public Rep_Fichier


Sub MAJ_OPTIMUM()
'
' MAJ_Suivi_D2 Macro
' Mise à jour des donnée OPTIMUM
'
Dim Dossier As String
Dim Id_PM, Etat_PM, Id_PA, Etat_PA, Id_Process, Num, Num_cplt, Voie, Adresse, Batiment, Etat_Nego, Nb_logt, logt_R, logt_P, Annee_prog, typo, Envoi_acces, Valid_acces, Id_PB, Date_PB, Code_syndic, Nom_syndic, DTA, Nego_int, Envoi_accord, Retour_accord, Refus_accord, Date_recep_PETU, Date_valid_PETU, Date_accord As Variant
Dim i, j As Integer
Dim trouve As Boolean
Dim shSUIVI As Worksheet

Set shSUIVI = Workbooks("Export site lot2 LE MANS.xlsm").Worksheets("Suivi D2")


Call MaProcedure
'recuperation nom du fichier sans le chemin
NomFichier = Right(NomFichier, Len(NomFichier) - Len(Rep_Fichier))

With Workbooks(NomFichier).Worksheets("sites")

i = 10
Do While Not (IsEmpty(.Cells(i, 1)))

Dossier = .Cells(i, 1)

Id_PM = .Cells(i, 6).Value
Etat_PM = .Cells(i, 9).Value
Id_PA = .Cells(i, 14).Value
Etat_PM = .Cells(i, 15).Value
Id_Process = .Cells(i, 16).Value
Num = .Cells(i, 23).Value
Num_cplt = .Cells(i, 24).Value
Voie = .Cells(i, 25).Value
Adresse = .Cells(i, 26).Value
Batiment = .Cells(i, 27).Value
Etat_Nego = .Cells(i, 33).Value
Nb_logt = .Cells(i, 46).Value
logt_R = .Cells(i, 47).Value
logt_P = .Cells(i, 48).Value
Annee_prog = .Cells(i, 58).Value
typo = .Cells(i, 39).Value
Envoi_acces = .Cells(i, 64).Value
Valid_acces = .Cells(i, 65).Value
Id_PB = .Cells(i, 115).Value
Date_PB = .Cells(i, 116).Value
Code_syndic = .Cells(i, 121).Value
Nom_syndic = .Cells(i, 122).Value
DTA = .Cells(i, 123).Value
Nego_int = .Cells(i, 130).Value
Envoi_accord = .Cells(i, 136).Value
Retour_accord = .Cells(i, 137).Value
Refus_accord = .Cells(i, 138).Value
Date_recep_PETU = .Cells(i, 143).Value
Date_valid_PETU = .Cells(i, 147).Value
Date_accord = .Cells(i, 150).Value

trouve = False

Workbooks("Export site lot2 LE MANS.xlsm").Worksheets("Suivi D2").Activate

j = 10
Do While Not IsEmpty(shSUIVI.Cells(j, 2))

If shSUIVI.Cells(j, 2) = Dossier Then

If Not IsNull(Id_PM) Or Id_PM <> "" Then
shSUIVI.Cells(j, 2) = Id_PM
End If
If Not IsNull(Etat_PM) Or Etat_PM <> "" Then
shSUIVI.Cells(j, 2) = Etat_PM
End If
If Not IsNull(Id_PA) Or Id_PA <> "" Then
shSUIVI.Cells(j, 2) = Id_PA
End If
If Not IsNull(Etat_PM) Or Etat_PM <> "" Then
shSUIVI.Cells(j, 2) = Etat_PM
End If
If Not IsNull(Id_Process) Or Id_Process <> "" Then
shSUIVI.Cells(j, 2) = Id_Process
End If
If Not IsNull(Num) Or Num <> "" Then
shSUIVI.Cells(j, 2) = Num
End If
If Not IsNull(Num_cplt) Or Num_cplt <> "" Then
shSUIVI.Cells(j, 2) = Num_cplt
End If
If Not IsNull(Voie) Or Voie <> "" Then
shSUIVI.Cells(j, 2) = Voie
End If
If Not IsNull(Adresse) Or Adresse <> "" Then
shSUIVI.Cells(j, 2) = Adresse
End If
If Not IsNull(Batiment) Or Batiment <> "" Then
shSUIVI.Cells(j, 2) = Batiment
End If
If Not IsNull(Etat_Nego) Or Etat_Nego <> "" Then
shSUIVI.Cells(j, 2) = Etat_Nego
End If
If Not IsNull(Nb_logt) Or Nb_logt <> "" Then
shSUIVI.Cells(j, 2) = Nb_logt
End If
If Not IsNull(logt_R) Or logt_R <> "" Then
shSUIVI.Cells(j, 2) = logt_R
End If
If Not IsNull(logt_P) Or logt_P <> "" Then
shSUIVI.Cells(j, 2) = logt_P
End If
If Not IsNull(Annee_prog) Or Annee_prog <> "" Then
shSUIVI.Cells(j, 2) = Annee_prog
End If
If Not IsNull(typo) Or typo <> "" Then
shSUIVI.Cells(j, 2) = typo
End If
If Not IsNull(Envoi_acces) Or Envoi_acces <> "" Then
shSUIVI.Cells(j, 2) = Envoi_acces
End If
If Not IsNull(Valid_acces) Or Valid_acces <> "" Then
shSUIVI.Cells(j, 2) = Valid_acces
End If
If Not IsNull(Id_PB) Or Id_PB <> "" Then
shSUIVI.Cells(j, 2) = Id_PB
End If
If Not IsNull(Date_PB) Or Date_PB <> "" Then
shSUIVI.Cells(j, 2) = Date_PB
End If
If Not IsNull(Code_syndic) Or Code_syndic <> "" Then
shSUIVI.Cells(j, 2) = Code_syndic
End If
If Not IsNull(Nom_syndic) Or Nom_syndic <> "" Then
shSUIVI.Cells(j, 2) = Nom_syndic
End If
If Not IsNull(DTA) Or DTA <> "" Then
shSUIVI.Cells(j, 2) = DTA
End If
If Not IsNull(Nego_int) Or Nego_int <> "" Then
shSUIVI.Cells(j, 2) = Nego_int
End If
If Not IsNull(Envoi_accord) Or Envoi_accord <> "" Then
shSUIVI.Cells(j, 2) = Envoi_accord
End If
If Not IsNull(Retour_accord) Or Retour_accord <> "" Then
shSUIVI.Cells(j, 2) = Retour_accord
End If
If Not IsNull(Refus_accord) Or Refus_accord <> "" Then
shSUIVI.Cells(j, 2) = Refus_accord
End If
If Not IsNull(Date_recep_PETU) Or Date_recep_PETU <> "" Then
shSUIVI.Cells(j, 2) = Date_recep_PETU
End If
If Not IsNull(Date_valid_PETU) Or Date_valid_PETU <> "" Then
shSUIVI.Cells(j, 2) = Date_valid_PETU
End If
If Not IsNull(Date_accord) Or Date_accord <> "" Then
shSUIVI.Cells(j, 2) = Date_accord
End If

GoTo debut
trouve = True
End If
j = j + 1
Loop


debut:
'Next i
i = i + 1
Loop
End With
MsgBox "MAJ Terminée", vbOKOnly
End Sub

Sub MaProcedure()

NomFichier = RechercheFichier()
If NomFichier = "" Then
MsgBox "Vous n'avez sélectionné aucun fichier"
Else
Workbooks.Open NomFichier
End If
End Sub

Function RechercheFichier() As String
Dim fd As FileDialog
Dim NomFichier As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Add "fichier xls", "*.xls"
.Title = "Recherche de fichier" 'mettre le chemin du repertoire
.InitialFileName = "d:\_cles\" '"Bureau\"
'repertoire fichier
Rep_Fichier = .InitialFileName
End With
If fd.Show = -1 Then NomFichier = fd.SelectedItems(1)
RechercheFichier = NomFichier
End Function


A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
10 oct. 2013 à 08:45
Bonjour,

Encore un grand merci pour ton aide.

Cependant je viens de le tester et je me retrouve avec une erreur d'execution '9'

L'indice n'appartient pas à la selection

With Workbooks(NomFichier).Worksheets("sites")

Auriez vous une petite idée sur la question ?

En vous remerciant par avance.
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
10 oct. 2013 à 08:58
J'ai l'impression qu'à la fin de la deuxième boucle, le code ne parvient pas à revenir au classeur source...

Tout le code est il à reprendre ?

Merci pour vos réponses.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
10 oct. 2013 à 09:58
Bonjour,

With Workbooks(NomFichier).Worksheets("sites")
quand vous avez l'erreur, quel est le contenu de NomFichier ??
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
10 oct. 2013 à 10:05
Le contenu ne varie pas d'un passage de boucle à l'autre.
NomFichier est censé récupérer le nom du fichier source défini par la recherche de fichier initiale.
Mais j'ai la forte impression qu'une fois passé un tour de boucle, le NomFichier n'est plus du tout reconnu.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
10 oct. 2013 à 10:09
Re,

Mais j'ai la forte impression qu'une fois passé un tour de boucle, le NomFichier n'est plus du tout reconnu. Repondez a la question, NomFichier contient-il le nom du fichier attendu ????
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
10 oct. 2013 à 11:56
"NomFichier" contient le nom du fichier source avec son extension .xls
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
10 oct. 2013 à 13:02
Re,

Il faut montrer votre code entier, pour comprendre.

A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
10 oct. 2013 à 13:52
Vous trouverez ci-après le code au complet :

https://www.cjoint.com/c/CJkn0ekvtZf
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
10 oct. 2013 à 15:17
Re,

essayez avec ce code:

https://www.cjoint.com/?CJkprJTNwM7

A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
10 oct. 2013 à 16:52
Merci pour la tentative.
Malheureusement infructueuse : en effet la seconde boucle ne retrouve plus sa condition "Do"...

J'essayerai de vous fournir les 2 fichiers concernés par soucis de facilité de codage...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 10/10/2013 à 17:56
Re,

En effet, vos fichiers serons bienvenus, car je peux difficilement tester les boucles do et je ne comprends pas vraiment votre facon de faire!!!

A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
14 oct. 2013 à 09:47
Bonjour,

Désolé pour le temps sans réponse (fin de semaine chargée...)

Ci-après les 2 fichiers concernés :

https://www.cjoint.com/?CJojVDpzeTL
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
14 oct. 2013 à 14:07
Bonjour,

Désolé pour le temps sans réponse (fin de semaine chargée...) Y a pas de lezards. Je recupere vos fichiers et vous tiens au courant.

A+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 14/10/2013 à 15:36
Re,

Une ligne en trop dans Function RechercheFichier() As String:
Dim NomFichier As String (sorry, j'ai oublie de l'enlever dans le code que je vous ai donne)

Vous pouvez nous rappeler ce que vous esperez faire avec votre macro MAJ_OPTIMUM() !!!!!

Si c'est une mise a jour de Suivi_D2, cela risque d'etre un peu long avec votre facon de proceder d'ou ce que j'avais ecrit : je ne comprends pas vraiment votre facon de faire!!!

A+
0
Tom 44 Messages postés 47 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 11 mars 2014
14 oct. 2013 à 15:39
Bonjour,

Le but de la macro est en 2 phases :

1° Permettre à l'utilisateur d'ouvrir un fichier de données source.

Cette partie de lamacro fonctionne très bien grâce à vous.

2° La macro doit récupérer les informations du fichier source et les transposer dans le fichier cible en se référant aux codes IMB présents dans les 2 fichiers :

Colonne A (Fichier source)
Colonne B (Fichier cible)

J'avais donc commencer par désigner les colonnes de données à récupérer dans le fichier source par une 1ère boucle Do While, puis désigner de la même façon les colonnes cibles du second fichier avec une 2ème boucle Do While.

Mais depuis la MAJ de la macro, la première boucle ne fonctionne plus...


Je suis bien conscient que cette méthode n'est pas la plus rapide (surtout lors de l'execution de la macro), mais devrait tout de même fonctionner. Enfin je crois...
0