Macro
Zen
-
Zen -
Zen -
Bonjour,
Pouvez-vous m'aider à créer un macro de report, c'est-à-dire qui recherche une donnée pour la mettre ailleurs.
J'ai tout expliqué sur ce fichier.
Merci d'avance pour les personnes qui voudront bien m'aider.
https://www.cjoint.com/?kBt5PycU3J
Pouvez-vous m'aider à créer un macro de report, c'est-à-dire qui recherche une donnée pour la mettre ailleurs.
J'ai tout expliqué sur ce fichier.
Merci d'avance pour les personnes qui voudront bien m'aider.
https://www.cjoint.com/?kBt5PycU3J
Configuration: Windows XP Internet Explorer 7.0
4 réponses
-
Bonsoir,
Une proposition : Report.xls
En Feuil2 il faut nommer la plage des tarifs : 'tarif'
Seules les cellules vides sont mises à jour, j'ajoute un fond vert pour les repérer pendant les tests.
eric -
bonjour
Voici ton classeur avec la macro :
http://www.cijoint.fr/cjlink.php?file=cj200910/cijvJo1igp.xls
Il faut bien sûr que tu autorises l'exécution des macros pour qu'elle soit efficiente. -
bonjour
Avec une macro événementielle sur la Feuil2 cela devrait faire ce que tu veux
Option Explicit Private Sub Worksheet_Change(ByVal sel As Range) If sel.Column < 3 Then 'seules les colonnes A et B sont cocernées Dim cel As Object For Each cel In sel ' boucle pour chaque cellule mise à jour Select Case cel.Column Case 1 ' colonne A Call trt_elm(cel.Value, cel.Offset(0, 1).Value) Case 2 ' colonne B Call trt_elm(cel.Offset(0, -1).Value, cel.Value) End Select Next cel End If End Sub Public Sub trt_elm(num, tar) 'analyse Feuil1 Dim lig As Long, lyg As Long With Sheets("Feuil1") For lig = 1 To .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row If .Cells(lig, 1).Value = num Then 'n° trouvé If .Cells(lig, 3).Value = tar Then Exit Sub 'tarif égal => rien For lyg = lig To .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row If .Cells(lyg, 3).Value = tar Then Exit Sub 'tarif égal => rien Next lyg 'pas de n° et tarif égaux =>on ajoute .Cells(lyg, 1).Value = num .Cells(lyg, 3).Value = tar Exit Sub End If Next lig If lig > .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row Then .Cells(lig, 1).Value = num .Cells(lig, 3).Value = tar End If End With End Sub
Seuls les nouveaux tarifs pour un produit ou les nouveaux produits sont rajoutés. -
Bonsoir,
Je veux bien te donner un coup de main pour ton fichier, mais je ne vois pas comment tu va gerer les changements successifs de tarifs avec ta methode.
imagine:tarif 1 : 89 tarif 2: 120 tarif 3: 125 etc... Dans ce cas, on a déjà 3 fois la même ligne ...
Ne peut on pas plutot envisager:
- une colonne ancien tarif
- une colonne Tarif
- une colonne date
Cela permet de conserver les 2 derniers tarifs (y compris l'actuel)
A toi de voir?
@+
Laurent-
Salut,
Oui je comprends ce que tu veux dire mais c'est vrai que c'est difficile de se projeter lorsqu'on a pas tout le tableau. En fait ces lignes doivent de toutes facon être créer pour d'autres colonnes alors ce n'est pas grave mais si je ne devais pas rajouter des données dans d'autres colonnes ton idée aurait été idéal. :-)
-