Qualificateur incorrect

Résolu
Tom 44 Messages postés 47 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

  • 1
  • 2
  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. Tom 44 Messages postés 47 Statut Membre
     
    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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Oui. Je regarde la chose.

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

    A+
    0
  4. Tom 44 Messages postés 47 Statut Membre
     
    Oui tout à fait.
    C'est d'ailleurs le seul onglet du classeur.

    Cdt,
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  7. Tom 44 Messages postés 47 Statut Membre
     
    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
  8. Tom 44 Messages postés 47 Statut Membre
     
    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
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    With Workbooks(NomFichier).Worksheets("sites")
    quand vous avez l'erreur, quel est le contenu de NomFichier ??
    0
  10. Tom 44 Messages postés 47 Statut Membre
     
    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
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  12. Tom 44 Messages postés 47 Statut Membre
     
    "NomFichier" contient le nom du fichier source avec son extension .xls
    0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Il faut montrer votre code entier, pour comprendre.

    A+
    0
  14. Tom 44 Messages postés 47 Statut Membre
     
    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
  15. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  16. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  18. Tom 44 Messages postés 47 Statut Membre
     
    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
  • 1
  • 2