Remplissage colonne

Fermé
Mathilde - Modifié par Mathilde le 30/07/2015 à 13:41
 Mathilde - 30 juil. 2015 à 14:09
Bonjour,

je rencontre un problème avec ma macro. Je vous explique le principe. J'ai un onglet qui s'appelle Inputs011. Dans cet onglet , j'ai un tableau avec des données (les lignes peuvent varier et les colonnes quant à elles vont de A à N). Normalement les colonnes sont fixes et ne changent pas. Mais il n'est pas impossible de que le nombre de colonnes changent. Je souhaite créer une colonne juste après la dernière colonne de mon tableau. Tout d'abord elle s'appelerai "Cmdé Réel". Dans cette colonne, il y a plusieurs paramétres à prendre en compte. Voici un schèma pour que cela soit un peu plus explicite!

A | B | C | D
LIVRAISON FINALE|RECEPTIONNE|COMMANDE|CMDE REEL
X | 2 | 4| 2|
X | 1 | 6| 1|
(vide) | 4 | 10| 10|
X | 5 | 15| 5|

Alors voila. J'ai dans mon tableau les colonne A, B et C déjà faite. Comme je disais, le nombre de colonnes ne change pas forcément par contre le nombre de lignes change assez réguliérement. Je veux créer une colonne "cmde reel" juste aprés la dernière colonne de mon tableau. Cette colonne aurait le même nombre de lignes que mon tableau et devra prendre en compte certains éléments. Par exemple pour la première ligne, si dans ma colonne livraison finale il y a un "X" alors on prends la valeur de ma colonne receptionne pour la mettre dans ma colonne cmde reel . S'il n'y a pas de "X" alors on prend la valeur de la colonne commande pour la mettre dans ma colonne cmde reel.
Et je dois faire cette même opération sur tout mon tableau!

Je vous montre mon petit bout de code:

Set wb = ActiveWorkbook
Dim NomOngletInputs As String
NomOngletInputs = "Inputs011"

wb.Activate
wb.Worksheets(NomOngletInputs).Activate
i = 0
While ActiveCell.Offset(0, i).Value <> ""
i = i + 1
Wend
ActiveCell.Offset(0, i).Activate
ActiveCell.Offset(0, i).Value = "cmde reel"

Do While ActiveCell.Offset(i, 0).Value <> ""
i = i + 1

If Cells(i, 1).Value = "" Then
Cells(i, 3).Value.Select
Selection.Copy
Cells(i, 4).PasteSpecial
Else:
Cells(i, 2).Value.Select
Selection.Copy
Cells(i, 4).PasteSpecial

End If

Loop




Si quelqu'un pouvez m'aider ça serait vraiment top!
Merci d'avance.
A voir également:

1 réponse

Le premier problème dans mon code est :

Set wb = ActiveWorkbook
ExtractDir = ActiveWorkbook.Path & "\YMMRPT011\"
Dim NomOngletInputs As String
NomOngletInputs = "Inputs011"

wb.Activate
wb.Worksheets(NomOngletInputs).Activate

A = 0
Do While ActiveCell.Offset(0, A) <> ""
A = A + 1
Loop

ActiveCell.Offset(0, A).Activate
ActiveCell.Offset(0, A).Value = "Cmdé Réel"



Rien qu'avec ce bout de code, il y a un problème. Un coup il m'affiche "cmdé réel" dans une ligne x, un coup dans une ligne y. Mais jamais dans la ligne 0. Ou parfois il va me l'afficher dans la ligne 0 mais dans une colonne qui se trouve très très loin de mon tableau.


Et pour la suite du code, ça ne compile tout simplement pas!

Aidez-moi! Je ne comprends pas pourquoi ça ne fonctionne pas!
0