Bonjour,
J'ai une feuille de 1950 lignes sur laquelle un utilisateur à inclut des
données en Lignes ( Nb Produit, % et quantité) alors qu'elles devraient être
en Colonnes
J'ai tenté cette macro qui ne fonctionne pas
Sub Recup()
Range("D2:D1940").Select
For Each cell In Selection
If cell.Value = ("Total Réclamations") Then
Selection.Copy
ActiveCell.Offset(-1, -1).PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next
End If
End Sub
Je joins un classeur exemple
http://www.cijoint.fr/cjlink.php?file=cj200905/cij4hUELts.xls
Merci
Pascal
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DesseJ
Bonjour,
Vous pouvez récupérer les données en colonnes par un tableau croisé dynamique : champs de ligne (Produit, Gamme, Usine, Période), champ de colonne (Critere Details), données (Stat)
ou par la macro suivante (à adapter), si pour chaque couple Produit/ Gamme, vous avez 4 lignes de détail :
Sub Recup() Dim DerLig#, i#, j# With ActiveSheet DerLig = [A65536].End(3).Row For i = 2 To DerLig 'si changement de produit (col A) ou de gamme (col B), et que la ligne (col D) est typée "Détail" If (.Cells(i, 1) <> .Cells(i - 1, 1) Or .Cells(i, 2) <> .Cells(i - 1, 2)) And Left(.Cells(i, 4), 6) = "Détail" Then 'on parcours les 3 lignes suivantes For j = 1 To 3 Select Case .Cells(i + j, 4) Case "Total Réclamations" .Cells(i, 9) = .Cells(i + j, 7) Case "Ventes UC" .Cells(i, 10) = .Cells(i + j, 7) Case "% PPM" .Cells(i, 11) = .Cells(i + j, 7) End Select Next j End If Next i End With End Sub
Cordialement StephD
Bonjour,
Vous pouvez récupérer les données en colonnes par un tableau croisé
dynamique : champs de ligne (Produit, Gamme, Usine, Période), champ de
colonne (Critere Details), données (Stat)
ou par la macro suivante (à adapter), si pour chaque couple Produit/
Gamme, vous avez 4 lignes de détail :
Sub Recup()
Dim DerLig#, i#, j#
With ActiveSheet
DerLig = [A65536].End(3).Row
For i = 2 To DerLig
'si changement de produit (col A) ou de gamme (col B), et
que la ligne (col D) est typée "Détail"
If (.Cells(i, 1) <> .Cells(i - 1, 1) Or .Cells(i, 2)
<> .Cells(i - 1, 2)) And Left(.Cells(i, 4), 6) = "Détail" Then
'on parcours les 3 lignes suivantes
For j = 1 To 3
Select Case .Cells(i + j, 4)
Case "Total Réclamations"
.Cells(i, 9) = .Cells(i + j, 7)
Case "Ventes UC"
.Cells(i, 10) = .Cells(i + j, 7)
Case "% PPM"
.Cells(i, 11) = .Cells(i + j, 7)
End Select
Next j
End If
Next i
End With
End Sub
Vous pouvez récupérer les données en colonnes par un tableau croisé dynamique : champs de ligne (Produit, Gamme, Usine, Période), champ de colonne (Critere Details), données (Stat)
ou par la macro suivante (à adapter), si pour chaque couple Produit/ Gamme, vous avez 4 lignes de détail :
Sub Recup() Dim DerLig#, i#, j# With ActiveSheet DerLig = [A65536].End(3).Row For i = 2 To DerLig 'si changement de produit (col A) ou de gamme (col B), et que la ligne (col D) est typée "Détail" If (.Cells(i, 1) <> .Cells(i - 1, 1) Or .Cells(i, 2) <> .Cells(i - 1, 2)) And Left(.Cells(i, 4), 6) = "Détail" Then 'on parcours les 3 lignes suivantes For j = 1 To 3 Select Case .Cells(i + j, 4) Case "Total Réclamations" .Cells(i, 9) = .Cells(i + j, 7) Case "Ventes UC" .Cells(i, 10) = .Cells(i + j, 7) Case "% PPM" .Cells(i, 11) = .Cells(i + j, 7) End Select Next j End If Next i End With End Sub
Cordialement StephD
pb
Un grand merci c'est exactement cela.
a écrit dans le message de news:
Bonjour,
Vous pouvez récupérer les données en colonnes par un tableau croisé dynamique : champs de ligne (Produit, Gamme, Usine, Période), champ de colonne (Critere Details), données (Stat)
ou par la macro suivante (à adapter), si pour chaque couple Produit/ Gamme, vous avez 4 lignes de détail :
Sub Recup() Dim DerLig#, i#, j# With ActiveSheet DerLig = [A65536].End(3).Row For i = 2 To DerLig 'si changement de produit (col A) ou de gamme (col B), et que la ligne (col D) est typée "Détail" If (.Cells(i, 1) <> .Cells(i - 1, 1) Or .Cells(i, 2) <> .Cells(i - 1, 2)) And Left(.Cells(i, 4), 6) = "Détail" Then 'on parcours les 3 lignes suivantes For j = 1 To 3 Select Case .Cells(i + j, 4) Case "Total Réclamations" .Cells(i, 9) = .Cells(i + j, 7) Case "Ventes UC" .Cells(i, 10) = .Cells(i + j, 7) Case "% PPM" .Cells(i, 11) = .Cells(i + j, 7) End Select Next j End If Next i End With End Sub
Cordialement StephD
Un grand merci c'est exactement cela.
<DesseJ@caramail.com> a écrit dans le message de news:
e7f5cc6e-2af4-4638-93dc-c8f0917af6cd@s16g2000vbp.googlegroups.com...
Bonjour,
Vous pouvez récupérer les données en colonnes par un tableau croisé
dynamique : champs de ligne (Produit, Gamme, Usine, Période), champ de
colonne (Critere Details), données (Stat)
ou par la macro suivante (à adapter), si pour chaque couple Produit/
Gamme, vous avez 4 lignes de détail :
Sub Recup()
Dim DerLig#, i#, j#
With ActiveSheet
DerLig = [A65536].End(3).Row
For i = 2 To DerLig
'si changement de produit (col A) ou de gamme (col B), et
que la ligne (col D) est typée "Détail"
If (.Cells(i, 1) <> .Cells(i - 1, 1) Or .Cells(i, 2)
<> .Cells(i - 1, 2)) And Left(.Cells(i, 4), 6) = "Détail" Then
'on parcours les 3 lignes suivantes
For j = 1 To 3
Select Case .Cells(i + j, 4)
Case "Total Réclamations"
.Cells(i, 9) = .Cells(i + j, 7)
Case "Ventes UC"
.Cells(i, 10) = .Cells(i + j, 7)
Case "% PPM"
.Cells(i, 11) = .Cells(i + j, 7)
End Select
Next j
End If
Next i
End With
End Sub
Vous pouvez récupérer les données en colonnes par un tableau croisé dynamique : champs de ligne (Produit, Gamme, Usine, Période), champ de colonne (Critere Details), données (Stat)
ou par la macro suivante (à adapter), si pour chaque couple Produit/ Gamme, vous avez 4 lignes de détail :
Sub Recup() Dim DerLig#, i#, j# With ActiveSheet DerLig = [A65536].End(3).Row For i = 2 To DerLig 'si changement de produit (col A) ou de gamme (col B), et que la ligne (col D) est typée "Détail" If (.Cells(i, 1) <> .Cells(i - 1, 1) Or .Cells(i, 2) <> .Cells(i - 1, 2)) And Left(.Cells(i, 4), 6) = "Détail" Then 'on parcours les 3 lignes suivantes For j = 1 To 3 Select Case .Cells(i + j, 4) Case "Total Réclamations" .Cells(i, 9) = .Cells(i + j, 7) Case "Ventes UC" .Cells(i, 10) = .Cells(i + j, 7) Case "% PPM" .Cells(i, 11) = .Cells(i + j, 7) End Select Next j End If Next i End With End Sub