Si celluleA = X alors copier celluleB+170 dans celluleD

  • Initiateur de la discussion Initiateur de la discussion Amandineuh
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Amandineuh

Guest
Coucou à tous, 😀

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. 😱

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

Pièces jointes

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 😱).

Sinon je te remercie, tous les coups de main sont bon à prendre 😉
Amandine.
 
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
 
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 !🙄

Enfin, j’exagère peut être,... sinon quoi dire à part un "grand merci" 😀
Amandine.
 
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 !🙄


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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
2
Affichages
386
Réponses
5
Affichages
839
Retour