Si celluleA = X alors copier celluleB+170 dans celluleD

Amandineuh

XLDnaute Nouveau
Coucou à tous, :D

J'ai un petit cas que j’essaie de traiter par moi même depuis environ 3 heures, mais rien n'y fait ...:(

Très simplement, je souhaiterais faire un script balayant chaque ligne de la colonne "CODE", et lorsque celui ci vaut "3", il renvoie dans la colonne "MALUS" (et sur la même ligne) la valeur de la cellule "PRIX" majorée de 170.

J'ai joins un fichier pour illustrer mon exemple (à noter que les lignes peuvent varier d'un fichier à l'autre et qu'un adressage range("A1:A5") ne marcherait pas).

De mon coté j'ai tenté ça :
Code:
  Private Sub calcul()

    Dim Plage As Range, ligne As Long
    
    Plage = Range("B4", Range("B" & Rows.Count).End(xlUp)) 'B4 correspond à la première donnée numérique de la ligne juste en dessous de l'intitulé texte de la colonne C
        For Each cell In Plage
        If cell(ligne, 2).Value = 2 Then
        Cells(ligne, 4).Value = Cells(ligne, 3).Value + 170
        End If
        ligne = ligne + 1
    Next
Mais en plus de piquer les yeux ça ne donne que des erreurs script. :eek:

De fait, si quelqu'un passant par là pouvait venir à ma rescousse, je lui en serait très reconnaissante.
Merci,
Amandine.
 

Pièces jointes

  • ClasseurAPPRENDRE.xls
    32.5 KB · Affichages: 85
  • ClasseurAPPRENDRE.xls
    32.5 KB · Affichages: 65
  • ClasseurAPPRENDRE.xls
    32.5 KB · Affichages: 71

Amandineuh

XLDnaute Nouveau
Re : Si celluleA = X alors copier celluleB+170 dans celluleD

Coucou à toi R@chid, en fait j'aurais souhaité avoir un script un peu plus détaillé que je pourrais intégrer dans une procédure d'appel par exemple.
Et comme je l'ai dit cette opération peut être fait sur des fichiers dont le nombre de lignes varie d'un fichier à l’autre, et sur ce point je suis complétement largué en ce qui concerne les code d'adressages de sélection et déplacement (comme tu as put t'en rendre compte sur ma tentative :eek:).

Sinon je te remercie, tous les coups de main sont bon à prendre ;)
Amandine.
 

Cousinhub

XLDnaute Barbatruc
Re : Si celluleA = X alors copier celluleB+170 dans celluleD

Bonjour,

Peut-être ainsi :

Code:
Sub calcul()
Dim Plg As Range, Cel As Range
Set Plg = Range("B4:B" & Cells(Rows.Count, 2).End(xlUp).Row)
For Each Cel In Plg
    If Cel.Value = 3 Then
        Cel.Offset(, 2) = Cel.Offset(, 1) + 170
    End If
Next Cel
End Sub

Bon W-E
 

Amandineuh

XLDnaute Nouveau
Re : Si celluleA = X alors copier celluleB+170 dans celluleD

Ça fonctionne !!!

C'est élégant, simple de compréhension, et bigrement efficace ... bref je suis amoureuse !:rolleyes:

Enfin, j’exagère peut être,... sinon quoi dire à part un "grand merci" :D
Amandine.
 

Staple1600

XLDnaute Barbatruc
Re : Si celluleA = X alors copier celluleB+170 dans celluleD

Bonjour à tous

Ça fonctionne !!!

C'est élégant, simple de compréhension, et bigrement efficace ... bref je suis amoureuse !:rolleyes:


Amandine.

L'amour n'est plus dans le pré
Mais l'amour est dans VBE

Incroyable!

PS: bhbh: quel talent !

EDITION: Quel talent de tombeur, oui ! Tu sais, elles tombent toutes ...quand tu es , nuit et jour, en Option Explicit ;)
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
554

Statistiques des forums

Discussions
312 443
Messages
2 088 469
Membres
103 860
dernier inscrit
SebRol