Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copie de données vers un autre fichier

2 réponses
Avatar
Céline06
Bonjour à tous,
Une fois de plus, j'ai besoin de vos conseils avisés.
J'ai cette macro:

Sub Copie()

Dim Ligne As Integer
Dim Cell, MaPlageX As Range
Sheets("Feuil2").Select
[A1].Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Ligne = ActiveCell.Row
Sheets("Feuil1").Select
Set MaPlageX = Range("K1:K17") 'à adpater
For Each Cell In MaPlageX
If Cell = "X" Then
Feuil2.Range("A" & Ligne).Value = Cell.Offset(0, -10)
Feuil2.Range("A" & Ligne).Offset(0, 1).Value = Cell.Offset(0, -9)
Ligne = Ligne + 1
End If
Next

End Sub

Lorsque j'ai une croix dans la colonne K, les données des colonnes A et B
sont recopiées dans la feuille 2 dans les colonnes A et B. je voudrais faire
la même chose mais d'un classeur vers un autre. Une chose que je souhaite
conserver c'est que la macro recopie les données les unes a la suite des
autres sans que l'ordre des croix dans la colonne K ne rentre en compte.
C'est à dire que si je coche K2 puis K1, je ne veux pas que les données de A1
et B1 se recopient avant A2 et B2. Je voudrais que les premières cochées
restent en 1er.

J'espère vraiment que vous allez pouvoir m'aider. Deja grace a votre aide,
j'ai pu mettre au point une base de données qui commence a "avoir de la
gueule" alors j'espère que ca va pouvoir continuer.

Merci !!!!!!!

2 réponses

Avatar
Daniel
Bonjour.
Je pense que le code suivant devrait le faire. Classeur2.xls est le classeur
source, cible.xls est le classeur destination.

Sub Copie()

Dim Ligne As Integer
Dim Cell, MaPlageX As Range
Workbooks("cible.xls").Activate
Sheets("Feuil2").Select
[A1].Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Ligne = ActiveCell.Row
Workbooks("classeur2.xls").Activate
Sheets("Feuil1").Select
Set MaPlageX = Range("K1:K17") 'à adpater
For Each Cell In MaPlageX
If Cell = "X" Then
With Workbooks("cible.xls").Sheets("Feuil2")
.Range("A" & Ligne).Value = Cell.Offset(0, -10)
.Range("A" & Ligne).Offset(0, 1).Value = Cell.Offset(0, -9)
End With
Ligne = Ligne + 1
End If
Next

End Sub

Cordialement.
Daniel
"Céline06" a écrit dans le message de
news:
Bonjour à tous,
Une fois de plus, j'ai besoin de vos conseils avisés.
J'ai cette macro:

Sub Copie()

Dim Ligne As Integer
Dim Cell, MaPlageX As Range
Sheets("Feuil2").Select
[A1].Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Ligne = ActiveCell.Row
Sheets("Feuil1").Select
Set MaPlageX = Range("K1:K17") 'à adpater
For Each Cell In MaPlageX
If Cell = "X" Then
Feuil2.Range("A" & Ligne).Value = Cell.Offset(0, -10)
Feuil2.Range("A" & Ligne).Offset(0, 1).Value = Cell.Offset(0, -9)
Ligne = Ligne + 1
End If
Next

End Sub

Lorsque j'ai une croix dans la colonne K, les données des colonnes A et B
sont recopiées dans la feuille 2 dans les colonnes A et B. je voudrais
faire
la même chose mais d'un classeur vers un autre. Une chose que je souhaite
conserver c'est que la macro recopie les données les unes a la suite des
autres sans que l'ordre des croix dans la colonne K ne rentre en compte.
C'est à dire que si je coche K2 puis K1, je ne veux pas que les données de
A1
et B1 se recopient avant A2 et B2. Je voudrais que les premières cochées
restent en 1er.

J'espère vraiment que vous allez pouvoir m'aider. Deja grace a votre aide,
j'ai pu mettre au point une base de données qui commence a "avoir de la
gueule" alors j'espère que ca va pouvoir continuer.

Merci !!!!!!!


Avatar
Céline06
Merci beaucoup Daniel ! C'est parfait !

Merci aussi à tous et toutes pour votre aide qui est vraiment precieuse. :-)


Bonjour.
Je pense que le code suivant devrait le faire. Classeur2.xls est le classeur
source, cible.xls est le classeur destination.

Sub Copie()

Dim Ligne As Integer
Dim Cell, MaPlageX As Range
Workbooks("cible.xls").Activate
Sheets("Feuil2").Select
[A1].Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Ligne = ActiveCell.Row
Workbooks("classeur2.xls").Activate
Sheets("Feuil1").Select
Set MaPlageX = Range("K1:K17") 'à adpater
For Each Cell In MaPlageX
If Cell = "X" Then
With Workbooks("cible.xls").Sheets("Feuil2")
.Range("A" & Ligne).Value = Cell.Offset(0, -10)
.Range("A" & Ligne).Offset(0, 1).Value = Cell.Offset(0, -9)
End With
Ligne = Ligne + 1
End If
Next

End Sub

Cordialement.
Daniel
"Céline06" a écrit dans le message de
news:
Bonjour à tous,
Une fois de plus, j'ai besoin de vos conseils avisés.
J'ai cette macro:

Sub Copie()

Dim Ligne As Integer
Dim Cell, MaPlageX As Range
Sheets("Feuil2").Select
[A1].Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
Ligne = ActiveCell.Row
Sheets("Feuil1").Select
Set MaPlageX = Range("K1:K17") 'à adpater
For Each Cell In MaPlageX
If Cell = "X" Then
Feuil2.Range("A" & Ligne).Value = Cell.Offset(0, -10)
Feuil2.Range("A" & Ligne).Offset(0, 1).Value = Cell.Offset(0, -9)
Ligne = Ligne + 1
End If
Next

End Sub

Lorsque j'ai une croix dans la colonne K, les données des colonnes A et B
sont recopiées dans la feuille 2 dans les colonnes A et B. je voudrais
faire
la même chose mais d'un classeur vers un autre. Une chose que je souhaite
conserver c'est que la macro recopie les données les unes a la suite des
autres sans que l'ordre des croix dans la colonne K ne rentre en compte.
C'est à dire que si je coche K2 puis K1, je ne veux pas que les données de
A1
et B1 se recopient avant A2 et B2. Je voudrais que les premières cochées
restent en 1er.

J'espère vraiment que vous allez pouvoir m'aider. Deja grace a votre aide,
j'ai pu mettre au point une base de données qui commence a "avoir de la
gueule" alors j'espère que ca va pouvoir continuer.

Merci !!!!!!!