Gestion des classeurs en VBA

Bonjour, j'ai ce code :

Sub Comptage_nb_livraisons()
    Dim Engin As Workbook
    Set Engin = Application.Workbooks.Open(ActiveWorkbook.Path + "\Stocks_Reactifs_Sansure_IC_Aix.xlsx")

    nb = Engin.Sheets.Count

    Workbooks("Form.xlsm").Sheets("Formulaire de commande").Range("C17").Value = nb

    Dim lot_i As String

    For i = 1 To nb + 1
        Workbooks("Form.xlsm").Sheets("Stock_recap_lots").Cells(i, 0).Select 'erreur ici
        'Workbooks("Stocks_Reactifs_Sansure_IC_Aix.xlsx").Sheets(i - 1).Range("A3").Value = lot_i
        'Workbooks("Form.xlsm").Sheets("Stock_recap_lots").Cells(i, 1).Value = Mid(lot_i, 6, 7)
    Next

    ActiveWorkbook.Close

End Sub

Relativement simple, mais lorsque je fais tourner erreur 1004 sur la ligne 12 (désoler je ne trouve pas comment montrer les ligne). J'arrive a contourner le problème en remplasant

Workbooks("Form.xlsm")

par

Workbooks(ActiveWorkbook + "\Form.xlsm")

mais je ne comprend pas pourquoi ca ne marche pas dans le premier cas étant donner que ça fonctionne quelque ligne au dessus ... Bref après ça j'ai un erreur 9 et la ...
Je ne connais pas le VBA.

Bien cordialement,

Elliot CHAUBRON

Bonjour Devilback,

Ta boucle i commençant à 1 tu cherches à sélectionner une feuille avec indice 0 (i-1). Donc Erreur 9 obligé.

'Workbooks("Stocks_Reactifs_Sansure_IC_Aix.xlsx").Sheets(i - 1).Range("A3").Value = lot_i

Ou pour sélectionner la 1ière feuille fait Sheets(1+ i -1) . Tout dépendra du nombre de feuilles de ton classeur.

Ou if i>1 Workbooks("Stocks...etc...).Sheets(i-1) etc...

Bonne continuation.

Bonjour X Cellus et merci pour ta réponse.

La ligne dont tu parles est commenté, le problème ne devrait donc pas venir d'ici ... Néanmoins merci pour ta remarque, j'allais faire cette erreur. Etrange tout de même de faire commencer l'indiçage des cellules à 0 et celle des feuilles à 1 ^^
Concernant l'erreur 1004, as-tu une idée?

Bien cordialement, Elliot

A nouveau,

Il y a plusieurs types d'erreur 1004.

capterr1004

C'est plus la dernière que tu dois avoir.

Ci-dessous dans ton code

 Workbooks("Form.xlsm").Sheets("Stock_recap_lots").Cells(i, 0).Select 'erreur ici

Pourquoi Cells(i, 0). Pour i c'est ok il débute par 1 selon la boucle et correspond à la valeur ligne. Par contre 0 pour la colonne? cela revient à cibler aucune colonne.

Quelle est la colonne souhaitée. Si c'est la colonne A ce sera 1, pour B ce sera 2, etc... Sinon fait Cells(i, "A") ou Cells(i, "B") etc... cela fonctionne aussi.

Bonne continuation.

Merci pour ton aide, effectivement l'indiçage commence à 1 pour les cellules également, je me suis trompé.
J'ai finalement résolu mon problème en écrivant :

        Workbooks("Stocks_Reactifs_Sansure_IC_Aix.xlsx").Sheets(i).Activate
        Range("H3").Select
        Application.CutCopyMode = False
        Selection.Copy
        Workbooks("Form.xlsm").Sheets("Stock_recap_lots").Activate
        Cells(i + 1, 3).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

Merci pour ton aide, bien cordialement,

Elliot

Bonjour à tous,

@devilback si ton problème est résolu, n'oublies pas de marquer le sujet comme étant résolu.

Merci

Rechercher des sujets similaires à "gestion classeurs vba"