Problème de FOR

Bonjour,

Je vous explique mon problème.

Je souhaite copier certaines cellules d'un classeur et les mettre dans des cellules précises d'un autre classeur.

Après avoir copié les cellules de la Ligne 1, le classeur 2 où a été copié les cellules se ferme en enregistrant.

Mais lorsque mon For s'incrémente, une erreur intervient.

Voici mon code :

Sub rangecopy()

Dim wkDest As Workbook

Dim Tablo

Dim Chemin As String, NomFichier As String

Set wkDest_1 = Application.Workbooks.Open("C:\Users\baptiste.moulin\Desktop\BS CABLE\Test\SIGNAL CABLE TEST SHEET.xlsx")

With ThisWorkbook.Sheets("MCC - INS - CABLES")

Num_Doc = .Range(.Cells(16, 4), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 4))

Tag = .Range(.Cells(16, 2), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 2))

Brins = .Range(.Cells(16, 6), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 6))

Section = .Range(.Cells(16, 7), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 7))

Typ_Cab = .Range(.Cells(16, 5), .Cells(.Cells(.Rows.Count, 5).End(xlUp).Row, 5))

End With

With wkDest_1.Sheets("Sheet1")

For i = LBound(Num_Doc, 1) To UBound(Num_Doc, 1)

For j = LBound(Num_Doc, 2) To UBound(Num_Doc, 2)

If Num_Doc(i, j) <> "" Then .Cells(2 + i, 7 + j) = Num_Doc(i, j)

If Tag(i, 2 - j) <> "" Then .Cells(4 + i, 1 + j) = Tag(i, j)

If Typ_Cab(i, j) <> "" Then .Cells(4 + i, 4 + j) = Typ_Cab(i, j)

If Brins(i, j) <> "" Then .Cells(4 + i, 7 + j) = Brins(i, j)

If Section(i, j) <> "" Then .Cells(4 + i, 8 + j) = Section(i, j)

NomFichier = "B10-PRC" & i & ".xlsx"

Chemin = "C:\Users\baptiste.moulin\Desktop\BS CABLE\Macro_Process\"

wkDest_1.SaveAs Chemin & NomFichier

Next j

Next i

End With

Une fois la première boucle réalisée ça n'écrase pas les données des cellules remplies précédemment.

Peut-être est-il possible d'imposer les cellules dans lesquelles on copie.

Merci de votre aide

Bonjour,

difficile de voir sans le fichier, notamment si ce sont des indices hors limite, voire négatifs

cela concerne quel for ? for i ou for j ?

dans ce genre de cas, comment à mettre des debug.print suivies des valeurs ad hoc et ouvre le débogueur avec Ctrl+G dans l'éditeur de macro

Bonjour, Salut Steelson !

Dès les premières lignes... Tu déclares une variable Workbook (wkDest) et tu en initialises une autre (wkDest_1) non déclarée... !

Mais tu sembles fâché avec les déclarations ! parce que tu poursuis avec une floppée de variables non déclarées. Quand ça commence comme ça, on peut s'attendre à trouver n'importe quoi !

Et déjà, cette multiplication de tableaux à une colonne c'est un peu n'importe quoi ! Et pas qu'un peu en fait !!!

LBound pour tous tes tableaux, c'est invariablement 1, il aurait donc mieux valu mettre 1 (car inutile de calculer ce qui est une constante fixe, et cela t'aurait peut-être aidé à réfléchir... ) Car pour des tableaux à une colonne, ta boucle j de LBound à UBound va invariablement de 1 à 1, donc tu peux la suprimer purement et simplement et remplacer partout j par 1...

Il ne te reste plus qu'à aller trouver les cellules ciblées pour voir ce que tu fais réellement.

Pour ordre !

Tu fais fort ! Trois fois le même sujet avec des titres différents :

Boucle imbriquée - hier à 16h09

Erreur d'exécution 9 - hier à 19h26

Problème de For - hier à 23h30

A quoi pensais-tu donc ? Il serait temps de réfléchir sur ton code et ta façon de le construire.

Rechercher des sujets similaires à "probleme"