Pb code VBA

S_D Messages postés 24 Statut Membre -  
 S_D -
Bonjour,

Soit 2 classeurs Orders comparison et Qury Orders . Ils contiennent chacun des feuilles

Qury Comparison contient 4 feuilles nommees. g range les noms ds un tableau
"MCT"
"MOT"
"PNE"
"PSS"

Orders Comparison en contient 4
"MCT - orders"
"MOT - orders"
"PNE - orders"
"PSS - orders"

Le but est de :

Pour chaque feuille de Qury regarder si tous ces elements sont ds Comparison et de rajouter une ligne
avec les infos correspondantes , si jamais l'element n'y ai pas


Et rien ne se passe

Sub rajout()
'variable de parcours des feuilles
Dim i As Integer
Dim J As Integer
Dim X As Range
Dim Y As Range
Dim N, NY As Integer
Dim Mois as integer
Mois = "'Aug 08"

Dim BUQu(8) As String

'File query
BUQu(5) = "MCT"
BUQu(6) = "MOT"
BUQu(7) = "PNE"
BUQu(8) = "PSS"

For J = 5 To J = 8
'trouver le mois ds le fichier de comparaison pr chaque feuille ATTEBTION SALES/ORDERS

Y = Workbooks("Orders Comparison 08 v 09").Sheets(BUQu(J) & " - Orders").Find(Mois)
NY = Y.Column

For i = 1 To 500

With Workbooks("Orders Comparison").Sheets(BUQu(J) & " - Orders")

If .Find(Workbooks("Qury Orders").Worksheets(BUQu(J)).Cells(i, 1)) Is Empty Then
.Sheets(BUQu(J)).Rows(8).Insert Shift:=xlDown
'remplissage
.Cells(8, 1).Value = Workbooks("Qury Orders").Worksheets(BUQu(J)).Cells(i, 2).Value
.Cells(8, NY).Value = Workbooks("Qury Orders").Worksheets(BUQu(J)).Cells(i, 3).Value

Else
X = .Find(Workbooks("Qury Orders").Worksheets(BUQu(J)).Cells(i, 1))
.Cells(X.Row, NY).Value = Workbooks("Qury Orders").Worksheets(BUQu(J)).Cells(i, 3).Value

End If

End With

Next i

Next J
End Sub

14 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    je crois savoir d'ou vient ton problème, voici le code avec correction :

    Sub rajout()
    'variable de parcours des feuilles
    Dim i As Integer
    Dim J As Integer
    Dim X As Range
    Dim Y As Range
    Dim N, NY As Integer
    Dim Mois as integer
    Mois = "'Aug 08"

    Dim BUQu(8) As String

    'File query
    BUQu(5) = "MCT"
    BUQu(6) = "MOT"
    BUQu(7) = "PNE"
    BUQu(8) = "PSS"

    For J = 5 To J = 8
    if j = 5 then
    BUQU ="MCT"
    end if
    if j= 6 then
    BUQU= "MOT"
    end if
    if j=7 then
    BUQU = "PNE"
    end if
    if j= 8 then
    BUQU = "PSS"
    end if

    'trouver le mois ds le fichier de comparaison pr chaque feuille ATTEBTION SALES/ORDERS

    Y = Workbooks("Orders Comparison 08 v 09").Sheets(BUQu & " - Orders").Find(Mois)
    NY = Y.Column

    For i = 1 To 500

    With Workbooks("Orders Comparison").Sheets(BUQu & " - Orders")

    If .Find(Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 1)) Is Empty Then
    .Sheets(BUQu).Rows(8).Insert Shift:=xlDown
    'remplissage
    .Cells(8, 1).Value = Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 2).Value
    .Cells(8, NY).Value = Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 3).Value

    Else
    X = .Find(Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 1))
    .Cells(X.Row, NY).Value = Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 3).Value

    End If

    End With

    Next i

    Next J
    End Sub
    0
  2. S_D Messages postés 24 Statut Membre
     
    Merci de ta reponse, mais cela ne marche pas plus .......
    0
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    Re,

    Je sais ce qui ne va pas :

    Sub rajout()
    'variable de parcours des feuilles
    Dim i As Integer
    Dim J As Integer
    Dim X As Range
    Dim Y As Range
    Dim N, NY As Integer
    Dim Mois as integer
    Mois = "'Aug 08"

    Dim BUQu(8) As String

    'File query
    BUQu(5) = "MCT"
    BUQu(6) = "MOT"
    BUQu(7) = "PNE"
    BUQu(8) = "PSS"

    For J = 5 To J = 8
    if j = 5 then
    BUQU ="MCT"
    end if
    if j= 6 then
    BUQU= "MOT"
    end if
    if j=7 then
    BUQU = "PNE"
    end if
    if j= 8 then
    BUQU = "PSS"
    end if

    'trouver le mois ds le fichier de comparaison pr chaque feuille ATTEBTION SALES/ORDERS
    Workbooks("Orders Comparison 08 v 09").activate
    Sheets(BUQu & " - Orders").select
    cells.select

    Y = find(Mois) 'je crois que c'est cette ligne qui ne risque pas de marcher mais essaie
    NY = Y.Column 'essaie mais cette ligne ne te renverra pas le numéro de colonne (je n'en suis pas sure

    'je le réécrirais comme ça
    'i=8
    'j=2
    'cells(i,j).select
    'do while selectionn <> mois
    'j=j+1
    'cells(i,j).select
    'loop
    'NY= j

    For i = 1 To 500

    cells(i,1).select
    If Cells(i, 1) Is Empty Then
    Sheets(BUQu).Rows(8).Insert Shift:=xlDown
    'remplissage
    Cells(8, 1) = Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 2)
    Cells(8, NY).Value = Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 3)

    Else
    Workbooks("Qury Orders").activate
    sheets(BUQu).select
    X = Find(selection)
    Cells(i, NY).Value = Workbooks("Qury Orders").Worksheets(BUQu).Cells(i, 3).Value

    End If

    Next i

    Next J
    End Sub

    'essaie mais je ne suis pas sure que ton code fonctionne. Parce que je ne suis pas sure que vba comprenne find et NY.column.
    Le mieux est de faire une boucle comme je l'ai fait. Fais le par F8 et dis mois quelle ligne bloque
    0
  4. S_D Messages postés 24 Statut Membre
     
    Ok je vais essayer, merci!

    Find marche , je l'ai utilise ds un autre programme....
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. S_D Messages postés 24 Statut Membre
     
    toujours pas ......
    0
  7. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    Sur quelle ligne bloque t il?
    0
  8. S_D Messages postés 24 Statut Membre
     
    Bonjour,

    je sais pas c'est vraiment bizarre , il se passe rien. Ton programme comme le mien , compilent , mais il ne se passe rien. Tres bizarre ......
    Pourtant je pense pas avoir d'erreur d'algo .....

    Je le revois et je reviens vers toi avec un autre algo ....

    Merci
    0
  9. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Désolé de taper l'incruste mais en lisant le code je relève plusieurs incohérences ... Il est étonnant que le compilateur n'est pas levé les exceptions:

    Par exemple :
    Dim Mois as integer
    Mois = "'Aug 08"

    Mois est de type Integer (nombre entier) et ici on lui attribut une chaîne de caractères ???

    Dans le même ordre :
    Dim X As Range
    Dim Y As Range

    X et Y sont déclarés comme des objets, mais ne sont pas instanciés.

    Y = find(Mois)

    N'est pas la syntaxe pour instancier un objet.

    Autre incohérence:
    For J = 5 To J = 8 

    On ne passe jamais dans la boucle.

    Pourquoi déclarer un tableau dimensionné à 8 alors que l'on a besoin que de 4 éléments ?

    2 autres questions:

    Sur quel classeur se trouve la macro, et le 2ème classeur était-il déjà ouvert ?

    Le code a-t-il été passé en mode débogage (touche F8) ?

    ;o)
    0
  10. S_D Messages postés 24 Statut Membre
     
    Bonjour ,

    1/ parce que en vrai j'utilise les 8 (la c la partie du code que je bosse), Du coups g fait un copier-coller ....
    2/cette macro utilise est sur un autre classeur que celui ou on ecrit, sur qury ....
    3/ le month je l'ai releve .... eheh
    4/Y:

    Set Y = Workbooks("Crouzet Orders Comparison 08 v 09").Sheets(BUQu(J + 4)).Range("A1:Z500").Find(Mois)

    5/ Le probleme c qu one ne passe pas ds la boucle , c'estr ca que je comprends pas .

    Merci de t'interessaer toi aussi a mon ca !

    Merci
    0
  11. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Pour passer dans la boucle :

    For i = 5 to 8
    '....
    Next i

    Set Y = Workbooks("Crouzet Orders Comparison 08 v 09").Sheets(BUQu(J + 4)).Range("A1:Z500")

    Find(mois) est une fonction ou une méthode, non une propriété.

    Y est un objet Range.

    Encore un peu de courage, tu ne vas pas tarder à trouver.

    ;o)
    0
  12. S_D Messages postés 24 Statut Membre
     
    Set Y = Workbooks("Orders Comparison 08 v 09").Sheets(BUQu(J + 4)).Range("A1:Z500").Find(Mois)

    voila pour Find. G craque , je l'ai deja utilise ds une autre partie de programme..... et ca marche parfaitement.. Ca fait deux jours que je patine ....
    0
  13. S_D Messages postés 24 Statut Membre
     
    Je comprends pas pourquoi la boucle s'enclanche pas
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      As tu corrigé:
      For j = 5 to j = 8 par For j = 5 to 8

      0
  14. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Es-tu sûr de la syntaxe ?

    Je te conseille d'utiliser le For Each ... Next

    Dim plage As Range
    Dim cl
    Dim col As Long
    Dim lig As Long
    Dim Mois As String
    
    Mois = "Aout"
    
    Set plage = Sheets(1).Range("A1:Z500") 
    
    For Each cl In plage
       If cl.Value = Mois Then
          col = cl.Column
          lig = cl.Row
          MsgBox "Colonne: " & col & ", Ligne: " & lig
       End If
    Next cl


    ;o)
    0
  15. S_D
     
    Ca Marche ,

    J'avais laisse plein d'erreurs de synthaxe debiles.
    Vos codes sont bons aussi. Du coup j'ai simpifie l'original
    Merci pour votre aide!

    Bonne journee
    0