Macro affectation de valeur avec conditions

Elodie195

XLDnaute Occasionnel
Bonjour,

Je sollicite votre aide concernant une macro Excel.

J'ai un tableau qui va de la colonne A à la colonne M.
En colonne A, j'ai des numéros de dossiers.
A partir de la colonne I j'ai des valeurs numériques jusqu'à la colonne M.

Chaque dossier est doublé, il est donc présent sur 2 lignes à chaque fois.
La seule différence et qu'il y a un code T1 pour le premier et code T10 pour le deuxième.

Le but de la macro serait d'affecter certaines valeurs du dossier T10 au dossier T1 et au final de supprimer les lignes avec le code T10 selon les conditions suivantes :

La macro parcoure les résultats numériques du dossier T1, et si la valeur est comprise entre 10 et 200, on la garde.
Dans le cas ou la valeur est inférieure à 10 ou supérieure à 200, il faut prendre la valeur du dossier du dessous avec le T10.

Au final, il faudrait se retrouver avec une seule ligne par dossier, sans aucun dossier T10 et où les valeurs numériques restantes respectent les conditions du dessus.

Merci d'avance de votre aide.

Bonne fin de journée.
 

Pièces jointes

  • TEST1.xlsx
    10.1 KB · Affichages: 31
  • TEST1.xlsx
    10.1 KB · Affichages: 31
Dernière édition:

Sheldor

XLDnaute Occasionnel
Supporter XLD
Re : Macro affectation de valeur avec conditions

bonsoir

feuille = "Resultat à obtenir"
For ligne = 3 To 9 Step 2
ligne_res = Sheets(feuille).Cells(65536, 1).End(xlUp).Row + 1

For a = 1 To 13
Sheets(feuille).Cells(ligne_res, a) = Cells(ligne, a)
Next a

For col = 9 To 13

If Cells(ligne, col) < 10 Or Cells(ligne, col) > 200 Then Sheets(feuille).Cells(ligne_res, col) = Cells(ligne + 1, col)

d = Cells(ligne + 1, col)

Next col

Next ligne
 

Paf

XLDnaute Barbatruc
Re : Macro affectation de valeur avec conditions

Bonsoir Elodie195, nicopec

une autre solution:

Code:
Sub MajLigne()
 Dim i As Long, j As Byte
 With Worksheets("TEST") ' à adapter
 For i = .Range("A" & .Rows.Count).End(xlUp).Row - 1 To 3 Step -2
    For j = 9 To 13
        If .Cells(i, j) < 10 Or .Cells(i, j) > 200 Then .Cells(i, j) = .Cells(i + 1, j)
    Next
    .Rows(i + 1).Delete
 Next
 End With
End Sub

A tester

A+
 

Discussions similaires

Réponses
2
Affichages
178

Statistiques des forums

Discussions
312 582
Messages
2 089 951
Membres
104 314
dernier inscrit
Tuubibumi