transposer la ligne dt la case C est non vide

Der-ru

XLDnaute Nouveau
Bonjour, je suis niveau debutant en VBA, et j'essayer de transposer sur une nouvelle page la valeur des lignes de mon tableau dont la colonne C est non vide. Seul probleme mes valeurs ne sont affichés que pendant la boucle FOR est donc ne restent pas sur la nouvelle page. qui pourrait me donner un coup de main ?
Un grand merci par avance

Sub TRANSPOSE()

Sheets("aa").Select
For i = 1 To 30
If Cells(i + 1, 3) <> "" Then
Rows(i).Select
Selection.Copy
Sheets("bb").Select
Rows(i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, TRANSPOSE:=False
End If
Next

End Sub
 

JNP

XLDnaute Barbatruc
Re : transposer la ligne dt la case C est non vide

Bonjour Der-ru et bienvenue :),
Pas sûr d'avoir tout compris
Code:
Sub TRANSPOSE()
Dim I As Integer
With Sheets("aa")
For I = 1 To 30
If .Cells(I, 3) <> "" Then
.Rows(I).Copy
Sheets("bb").Columns(I).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, TRANSPOSE:=True
Application.CutCopyMode = False
End If
Next
End With
End Sub
ferait-il ton bonheur ?
Bon dimanche :cool:
 

Staple1600

XLDnaute Barbatruc
Re : transposer la ligne dt la case C est non vide

Bonjour à tous


La même chose (mais en formule matricielle, sans macro)

Sélectionner en feuille bb, la plage D3:AD3
Saisir la formule ci-dessous dans la barre de formule
Code:
=TRANSPOSE(aa!C4:C30)
et valider avec CTRL+SHIFT+ENTREE

ftranpose.jpg
 
Dernière édition:

Der-ru

XLDnaute Nouveau
Re : transposer la ligne dt la case C est non vide

Un grand merci a tous les deux mais je ne m’en sors pas quand même.

En fait je me suis mal exprimer. Transposer n’est pas le mot. Sur ma feuille AA, j’ai un tableau, 3 colonnes trente lignes. Les deux première colonnes sont entièrement remplies ce qui n’est pas le cas de la troisièmes où certaines lignes n’ont pas de valeurs.

Ce que je cherche à faire c’est tout simplement copier le tableau sans les lignes qui ont un trou. Néanmoins, je ne peux pas les supprimer sur mon premier tableau car les données étant construites à partir de la case précédente ca fausse tout.
J’espère que je suis plus claire … ?
 

Der-ru

XLDnaute Nouveau
Re : transposer la ligne dt la case C est non vide

Voila ca marche : j'ai du introduire une autre variable
Dim n As Integer
m = 1
With Sheets("aa")
For n = 1 To 30
If .Cells(n, 3) <> "" Then
.Rows(n).Copy
Sheets("bb").Rows(m).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, TRANSPOSE:=False
Application.CutCopyMode = False
m = m + 1
End If
Next
End With

UN GRAND MERCI
PS: est ce que je dois vraiment introduire la nature de n ? si je l'introduit pas c'est par defaut un entier non ?
 

Staple1600

XLDnaute Barbatruc
Re : transposer la ligne dt la case C est non vide

Re

Si tu avais posté un fichier exemple (zippé et sans données confidentielles)
On pourrait mieux t'aider non ?

EDITION: après relecture de tes messages
si j'ai bien compris ce que tu veux faire, tu peux utiliser le filtre automatique
(voir code ci dessous)
(code testé sur la plage A4:C33 en Feuille aa
avec quelques cellules vides en C4:C33)

Code:
Sub a()
Dim pf As Range, plage_source, to_plage_destination As Range
Application.ScreenUpdating = False
Set to_plage_destination = Sheets("bb").Range("A4")

    With Sheets("aa")
        With .Range("C3")
            .Value = "XXXX"
            .AutoFilter 3, "<>"
        End With
        
    Set pf = .Range("_FilterDataBase")
    Set plage_source = _
            pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12)

        plage_source.Copy to_plage_destination

    .AutoFilterMode = False
    .[C3] = Empty
    End With
    Application.CutCopyMode = False
End Sub

PS: test ok sur Excel 2000
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : transposer la ligne dt la case C est non vide

Re :),
PS: est ce que je dois vraiment introduire la nature de n ? si je l'introduit pas c'est par defaut un entier non ?
Non. Par defaut, c'est un Variant, autrement dit, n'importe quoi en attendant que tu mettes quelque chose dedans (Entier, décimal, date, texte, etc.).
D'où il est mieux de déclarer ce que tu vas mettre dedans, ça évite bien des surprises :p...
Bonne fin de WE :cool:
 

Discussions similaires

Réponses
2
Affichages
152

Statistiques des forums

Discussions
312 503
Messages
2 089 053
Membres
104 013
dernier inscrit
VELONDAHY Mickaël