OVH Cloud OVH Cloud

Boucle ou RECHERCHEV...

4 réponses
Avatar
Thierry
Bonjour,

Je sais pas trop comment ça marche mais, j'ai quand même essayé après avoir
visité ExceLabo mais en vain. Comment est il possible de répéter cette macro
tout en incrémentant à chaque fois. J'arrive seulement avec For d'insérer
toujours les même données. Le problème est que toute les deux lignes dans la
feuilles ACHATS changent et je voudrais les formater sur deux colonnes dans
ma feuille STATS comme ceci:

Sheets("ACHATS").Select
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B1").Select
ActiveSheet.Paste

et ainsi de suite

Sheets("ACHATS").Select
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B2").Select
ActiveSheet.Paste

'En fin de compte, dans la feuille ACHATS les données sont toujours sur 2
lignes et dans la feuille STATS les mettre en forme sur 2 colonnes. Serait
il plus facile d'utiliser la RECHERCHEV mais comment incrémenter dans STATS
?
Jai bien le grand livre d'Excel mais à défaut de me décourrager, je serais
peut être grand père quand j'y arriverai.
Si je peux avoir un peu d'aide ça serait sympa (les livres ça fait pas tou)
Merci à celle (je me contententerai de ceux ou celui) qui pourrait me filer
un coup de main;

Thierry

4 réponses

Avatar
Pounet95
Bonjour,
Ce petit bout de code à mettre dans un module standard
A adapter bien sûr

Sub zz()
Dim wsDep, wsArr As Worksheet
Dim col As Integer
Dim lig As Long

'pour ne pas avoir mal aux yeux
'avec les mises à jour écran
Application.ScreenUpdating = False

'feuille de départ
[A1].Select
Set wsDep = ActiveSheet
'feuille Arrivée
Sheets("Feuil2").Select
[A1].Select
col = 1
lig = 1
Set wsArr = ActiveSheet

'revient sur feuille départ
wsDep.Activate
'boucle tant qu'il y a une valeur
Do While ActiveCell.Value <> ""
'copie contenu
wVal = ActiveCell.Value
'va dans feuille 2 colonne n° col
wsArr.Activate
'ligne en cours
Cells(lig, col).Value = wVal
If col = 1 Then
col = 2
Else
col = 1
'passer ligne suivante
lig = lig + 1
End If
'retour feuille départ
wsDep.Activate
'ligne suivante
ActiveCell.Offset(1, 0).Select
Loop
'voir résultat
wsArr.Select
Application.ScreenUpdating = True
End Sub

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Thierry" a écrit dans le message de news:
%
Bonjour,

Je sais pas trop comment ça marche mais, j'ai quand même essayé après
avoir
visité ExceLabo mais en vain. Comment est il possible de répéter cette
macro
tout en incrémentant à chaque fois. J'arrive seulement avec For d'insérer
toujours les même données. Le problème est que toute les deux lignes dans
la
feuilles ACHATS changent et je voudrais les formater sur deux colonnes
dans
ma feuille STATS comme ceci:

Sheets("ACHATS").Select
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B1").Select
ActiveSheet.Paste

et ainsi de suite

Sheets("ACHATS").Select
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B2").Select
ActiveSheet.Paste

'En fin de compte, dans la feuille ACHATS les données sont toujours sur 2
lignes et dans la feuille STATS les mettre en forme sur 2 colonnes. Serait
il plus facile d'utiliser la RECHERCHEV mais comment incrémenter dans
STATS
?
Jai bien le grand livre d'Excel mais à défaut de me décourrager, je serais
peut être grand père quand j'y arriverai.
Si je peux avoir un peu d'aide ça serait sympa (les livres ça fait pas
tou)
Merci à celle (je me contententerai de ceux ou celui) qui pourrait me
filer
un coup de main;

Thierry










Avatar
Rai
Bonjour,

Une autre solution.
Un peu plus rapide (pratique si ton tableau fait plus de 200 lignes), et plus courte.

Sub transpose()
'les points de départ de la transposition
Set achats = Sheets("Achats").[A1]
Set stats = Sheets("Stats").[A1]

'trouve la dernière ligne
derlig = Sheets("Achats").[A65536].End(xlUp).Row - 1

For i = 0 To derlig Step 2 'boucle de 2 en 2
stats.Offset(Int(i / 2), 0) = achats.Offset(i, 0)
stats.Offset(Int(i / 2), 1) = achats.Offset(i + 1, 0)
Next i
End Sub

"Thierry" a écrit dans le message de news: %
Bonjour,

Je sais pas trop comment ça marche mais, j'ai quand même essayé après avoir
visité ExceLabo mais en vain. Comment est il possible de répéter cette macro
tout en incrémentant à chaque fois. J'arrive seulement avec For d'insérer
toujours les même données. Le problème est que toute les deux lignes dans la
feuilles ACHATS changent et je voudrais les formater sur deux colonnes dans
ma feuille STATS comme ceci:

Sheets("ACHATS").Select
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B1").Select
ActiveSheet.Paste

et ainsi de suite

Sheets("ACHATS").Select
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B2").Select
ActiveSheet.Paste

'En fin de compte, dans la feuille ACHATS les données sont toujours sur 2
lignes et dans la feuille STATS les mettre en forme sur 2 colonnes. Serait
il plus facile d'utiliser la RECHERCHEV mais comment incrémenter dans STATS
?
Jai bien le grand livre d'Excel mais à défaut de me décourrager, je serais
peut être grand père quand j'y arriverai.
Si je peux avoir un peu d'aide ça serait sympa (les livres ça fait pas tou)
Merci à celle (je me contententerai de ceux ou celui) qui pourrait me filer
un coup de main;

Thierry










Avatar
Thierry
Bonsoir,

Ok et merci pour le coup de main.

@+

Thierry


"Pounet95" a écrit dans le message de news:

Bonjour,
Ce petit bout de code à mettre dans un module standard
A adapter bien sûr

Sub zz()
Dim wsDep, wsArr As Worksheet
Dim col As Integer
Dim lig As Long

'pour ne pas avoir mal aux yeux
'avec les mises à jour écran
Application.ScreenUpdating = False

'feuille de départ
[A1].Select
Set wsDep = ActiveSheet
'feuille Arrivée
Sheets("Feuil2").Select
[A1].Select
col = 1
lig = 1
Set wsArr = ActiveSheet

'revient sur feuille départ
wsDep.Activate
'boucle tant qu'il y a une valeur
Do While ActiveCell.Value <> ""
'copie contenu
wVal = ActiveCell.Value
'va dans feuille 2 colonne n° col
wsArr.Activate
'ligne en cours
Cells(lig, col).Value = wVal
If col = 1 Then
col = 2
Else
col = 1
'passer ligne suivante
lig = lig + 1
End If
'retour feuille départ
wsDep.Activate
'ligne suivante
ActiveCell.Offset(1, 0).Select
Loop
'voir résultat
wsArr.Select
Application.ScreenUpdating = True
End Sub

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"Thierry" a écrit dans le message de news:
%
Bonjour,

Je sais pas trop comment ça marche mais, j'ai quand même essayé après
avoir
visité ExceLabo mais en vain. Comment est il possible de répéter cette
macro
tout en incrémentant à chaque fois. J'arrive seulement avec For
d'insérer


toujours les même données. Le problème est que toute les deux lignes
dans


la
feuilles ACHATS changent et je voudrais les formater sur deux colonnes
dans
ma feuille STATS comme ceci:

Sheets("ACHATS").Select
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B1").Select
ActiveSheet.Paste

et ainsi de suite

Sheets("ACHATS").Select
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B2").Select
ActiveSheet.Paste

'En fin de compte, dans la feuille ACHATS les données sont toujours sur
2


lignes et dans la feuille STATS les mettre en forme sur 2 colonnes.
Serait


il plus facile d'utiliser la RECHERCHEV mais comment incrémenter dans
STATS
?
Jai bien le grand livre d'Excel mais à défaut de me décourrager, je
serais


peut être grand père quand j'y arriverai.
Si je peux avoir un peu d'aide ça serait sympa (les livres ça fait pas
tou)
Merci à celle (je me contententerai de ceux ou celui) qui pourrait me
filer
un coup de main;

Thierry













Avatar
Thierry
Bonsoir,

Je vais prendre le temps de regader. Merci encore.

Thierry




"Rai" a écrit dans le message de news:

Bonjour,

Une autre solution.
Un peu plus rapide (pratique si ton tableau fait plus de 200 lignes), et
plus courte.

Sub transpose()
'les points de départ de la transposition
Set achats = Sheets("Achats").[A1]
Set stats = Sheets("Stats").[A1]

'trouve la dernière ligne
derlig = Sheets("Achats").[A65536].End(xlUp).Row - 1

For i = 0 To derlig Step 2 'boucle de 2 en 2
stats.Offset(Int(i / 2), 0) = achats.Offset(i, 0)
stats.Offset(Int(i / 2), 1) = achats.Offset(i + 1, 0)
Next i
End Sub

"Thierry" a écrit dans le message de news:
%
Bonjour,

Je sais pas trop comment ça marche mais, j'ai quand même essayé après
avoir

visité ExceLabo mais en vain. Comment est il possible de répéter cette
macro

tout en incrémentant à chaque fois. J'arrive seulement avec For d'insérer
toujours les même données. Le problème est que toute les deux lignes dans
la

feuilles ACHATS changent et je voudrais les formater sur deux colonnes
dans

ma feuille STATS comme ceci:

Sheets("ACHATS").Select
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B1").Select
ActiveSheet.Paste

et ainsi de suite

Sheets("ACHATS").Select
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("ACHATS").Select
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("STATS").Select
Range("B2").Select
ActiveSheet.Paste

'En fin de compte, dans la feuille ACHATS les données sont toujours sur 2
lignes et dans la feuille STATS les mettre en forme sur 2 colonnes. Serait
il plus facile d'utiliser la RECHERCHEV mais comment incrémenter dans
STATS

?
Jai bien le grand livre d'Excel mais à défaut de me décourrager, je serais
peut être grand père quand j'y arriverai.
Si je peux avoir un peu d'aide ça serait sympa (les livres ça fait pas
tou)

Merci à celle (je me contententerai de ceux ou celui) qui pourrait me
filer

un coup de main;

Thierry