VBA Excel copie dans ligne sur condition

ninapom -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Complètement débutante sous VBA, je souhaiterais faire la chose suivante pour mon association :
on a un fichier Excel donnant la liste des commandes (en-tête et lignes dans le même fichier) avec 5 colonnes. Je voudrais recopier toutes les données d'en-tête de commandes sur les lignes pour pouvoir après les exploiter en analyse de façon indépendante.
Côté structure du fichier ça donne :
1er champ indique en-tête ou ligne (E ou L)
pour l'en-tête : 2eme champ : n° commande
3eme champ : date
4eme champ : statut
pour les lignes 2eme champ : article
3eme champ : qté
4eme champ : prix

Au total, je voudrais n'avoir que des lignes du type :
N° commande Date Statut Article Qté prix

Merci par avance de votre aide
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. ninapom
     
    j'ai essayé cela :
    Sub macro1
    '
    ' Macro1 Macro
    ' Macro enregistrée le 14/04/2008 par ninapom
    '

    Dim CelluleCommande As Range
    Dim CelluleCourante As Range
    Dim CelluleSuivante As Range
    Dim Commande As String
    Dim Statut As String
    Dim Nblignes As Integer
    Dim i As Integer
    Dim nblig As Integer

    Nblignes = ActiveSheet.UsedRange.Rows.Count
    For i = 1 To Nblignes
    Set CelluleCourante = Cells(i, 1)
    If CelluleCourante.Value = "C" Then
    Commande = CelluleCourante.Offset(0, 1).Value
    Statut = CelluleCourante.Offset(0, 7).Value
    End If
    nblig = 1
    CelluleSuivante = CelluleCourante.Offset(nblig, 0)
    While CelluleSuivante.Value = "P"
    CelluleSuivante.Offset(0, 7).Value = Commande
    CelluleSuivante.Offset(0, 8).Value = Statut
    nblig = nblig + 1
    Wend
    Next

    End Sub

    Mais je bloque sur la ligne "CelluleSuivante = CelluleCourante.Offset(nblig, 0)" et je ne comprends pas....
    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Set CelluleSuivante = CelluleCourante.Offset(nblig, 0)
    mais la prochaine fois précise le message d'erreur, ça peut aider.

    eric
    0