VBA Excel copie dans ligne sur condition

Fermé
ninapom - 23 juil. 2008 à 00:22
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 23 juil. 2008 à 08:10
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
A voir également:

2 réponses

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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
23 juil. 2008 à 08:10
Bonjour,

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

eric
0