Boucle copie Feuille 1 colle Feuille 2
Bonjour,
Sa fait un petit moment que je cherche, que je tente ... et que je tape des choses horribles sans trouve ma solution.
exemple :
J'aimerais créer une boucle qui va chercher en récupèrent la valeur cellule feuil1!B247 qui ce répété tous les 12 (B259,B271,B283,etc) jusqu'à cellules vide fin de la boucle. Puis sont coller en feuil2!A2 jusqu'à valeur nul.
Feuil1!B247 = FFFF
Donc Feuil2!A2 = FFFF
Feuil1!B523 = Vide
Fin de boucle et de la copie sur la feuille 2
Merci!!!!
Bonjour.
Il faut déterminer le nb de lignes de ta plage puis utiliser une boucle For Next avec un step 12 ou récupérer la valeur de la cellule à l'adresse de la ligne +12.
Dim NombreLigne as integer
Dim compteur as integer
Dim ValeurCellule as string
NombreLigne = monclasseur.mafeuille1.UsedRange.rows.count
compteur = 1
For i = 247 to NombreLigne step 12 ' (NombreLigne - 1) s'il y a une tétière
compteur = compteur + 1
ValeurCellule = Application.monclasseur.mafeuille1.Range ("A" & i).value 'colonne A pour l'exemple
Application.monclasseur.mafeuille2.Range ("A" & compteur ).value = ValeurCellule 'colonne A pour l'exemple
NextJ'ai corrigé le code en ajoutant un compteur pour éviter d'avoir les cellules de la feuille 2 éparpillées !
Cordialement.
Merci, je test ça de suite....
merci encore, mais je bloque :
Sub Test() Worksheets("Feuil1").Select Worksheets("Feuil2").Select Dim NombreLigne As Integer Dim compteur As Integer Dim ValeurCellule As String NombreLigne = Feuil1.UsedRange.Rows.Count compteur = 1 For i = 247 To NombreLigne Step 12 ' (NombreLigne - 1) s'il y a une tétière compteur = compteur + 1 ValeurCellule = Application.Feuil1.Range("A" & i).Value 'colonne A pour l'exemple Application.Feuil2.Range("A" & compteur).Value = ValeurCellule 'colonne A pour l'exemple Next End Sub
Où écris-tu ton code ?
Dans un module, dans le classeur ?
Tu es en option explicit ?
Tu n'auras toujours qu'un seul classeur d'ouvert ?
Tu n'as pas besoin d'utiliser la méthode"Select" et ce n'est pas de cette façon que tu dois déclarer tes worksheets.
essaie ça:
Option Explicit
Sub Test()
Dim NombreLigne, i As Integer
Dim compteur As Integer
Dim ValeurCellule As String
NombreLigne = Application.ActiveWorkbook.Worksheets.Item("Feuil1").UsedRange.Rows.Count
compteur = 0
For i = 247 To NombreLigne Step 12 ' (NombreLigne - 1) s'il y a une tétière
compteur = compteur + 1
ValeurCellule = Application.ActiveWorkbook.Worksheets.Item("Feuil1").Range("A" & i).Value 'colonne A pour l'exemple
Application.ActiveWorkbook.Worksheets.Item("Feuil2").Range("A" & compteur).Value = ValeurCellule 'colonne A pour l'exemple
Next
End SubSi ça fonctionne, tu peux mettre "RÉSOLU".
Bon courage.
pipout64 a écrit :Où écris-tu ton code ? Visual basic dans Excel 2013
Dans un module, dans le classeur ? Dans un classeur général
Tu es en option explicit ? Non, c'est juste que je test des truc ....
Tu n'auras toujours qu'un seul classeur d'ouvert ? je ne pense pas !
Tu n'as pas besoin d'utiliser la méthode"Select" et ce n'est pas de cette façon que tu dois déclarer tes worksheets.
Non mais ça ma aide a faire fonction ton script.
essaie ça:
Option Explicit Sub Test() Dim NombreLigne, i As Integer Dim compteur As Integer Dim ValeurCellule As String NombreLigne = Application.ActiveWorkbook.Worksheets.Item("Feuil1").UsedRange.Rows.Count compteur = 0 For i = 247 To NombreLigne Step 12 ' (NombreLigne - 1) s'il y a une tétière compteur = compteur + 1 ValeurCellule = Application.ActiveWorkbook.Worksheets.Item("Feuil1").Range("A" & i).Value 'colonne A pour l'exemple Application.ActiveWorkbook.Worksheets.Item("Feuil2").Range("A" & compteur).Value = ValeurCellule 'colonne A pour l'exemple Next End SubSi ça fonctionne, tu peux mettre "RÉSOLU".
Bon courage.
un grand Merci sa marche presque .... il me reste un souci sur le "NombreLigne" et égale à 786700. et sa bloque.
je tiens à dire encore Merci.
Quel est le nombre total de lignes à traiter dans ton fichier ?
Quel message d'erreur as-tu ?
Encore merci, je vais me contenter de 32000 ça marche bien.
Option Explicit
Sub Test()
Dim NombreLigne, i As Integer
Dim compteur As Integer
Dim ValeurCellule As String
NombreLigne = Application.ActiveWorkbook.Worksheets.Item("Feuil1").UsedRange.Rows.Count
compteur = 1
For i = 247 To 32000 Step 12 ' (NombreLigne - 1) s'il y a une tétière
compteur = compteur + 1
ValeurCellule = Application.ActiveWorkbook.Worksheets.Item("Feuil1").Range("B" & i).Value 'colonne A pour l'exemple
Application.ActiveWorkbook.Worksheets.Item("Feuil2").Range("A" & compteur).Value = ValeurCellule 'colonne A pour l'exemple
Next
End Subpipout64 a écrit :Quel est le nombre total de lignes à traiter dans ton fichier ?
inconnu c'est une importation d'un fichier TEXT qui varie très souvent.
Quel message d'erreur as-tu ?
Dépassement de capacité
Sauf si ta une solution ? je vais mettre "RÉSOLU".
essaie de modifier le typage de la variable i et donc de la passer de "integer" à "long"
Option Explicit
Sub Test()
Dim NombreLigne, i As Long
Dim compteur As Long
Dim ValeurCellule As String
NombreLigne = Application.ActiveWorkbook.Worksheets.Item("Feuil1").UsedRange.Rows.Count
compteur = 1
For i = 247 To 32000 Step 12 ' (NombreLigne - 1) s'il y a une tétière
compteur = compteur + 1
ValeurCellule = Application.ActiveWorkbook.Worksheets.Item("Feuil1").Range("B" & i).Value 'colonne A pour l'exemple
Application.ActiveWorkbook.Worksheets.Item("Feuil2").Range("A" & compteur).Value = ValeurCellule 'colonne A pour l'exemple
Next
End SubScript et parfait, tes un génie !!!
Merci encore.
Option Explicit
Sub Test()
Dim NombreLigne, i As Long
Dim compteur As Long
Dim ValeurCellule As String
NombreLigne = Application.ActiveWorkbook.Worksheets.Item("Feuil1").UsedRange.Rows.Count
compteur = 1
For i = 247 To NombreLigne Step 12 ' (NombreLigne - 1) s'il y a une tétière
compteur = compteur + 1
ValeurCellule = Application.ActiveWorkbook.Worksheets.Item("Feuil1").Range("B" & i).Value 'colonne A pour l'exemple
Application.ActiveWorkbook.Worksheets.Item("Feuil2").Range("A" & compteur).Value = ValeurCellule 'colonne A pour l'exemple
Next
End Sub