• Initiateur de la discussion Initiateur de la discussion OOLIVE
  • 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 !

OOLIVE

XLDnaute Occasionnel
Bonjour à tous,

Voilà, je sais que pour bon nombre d'entres vous, ma question va être plus que banale mais je découvre le codage VB et je dois avouer que ca me plaît.. Mais beaucoup de progrès à réaliser.

Aujourd'hui, je viens vers vous car j'aimerais savoir comment coder une fonction si.

En effet, dans un tableau (comme celui joint), je vais avoir des informations dans une colonne D (des nombres) et dans la colonne E (des lettres "C" ou "D").

EN fonction de la lettre, j'aimerais que :

Si E1 = "C" alors, le nombre dans la cellule D soit copié en B,
Si E1 = "D" alors le nombre dans la cellule D soit copié en C.

Etc etc. et ce, jusqu'au dernier nombre de la colonne D.


Merci beaucoup à tous pour votre aide.

Olivier.
 

Pièces jointes

Re : Fonction Si en VBA

Bonjour,

Merci pour votre retour.

Par formule, je sais faire. Mais j'aurais voulu le faire sous forme de macro. En effet, le fichier que j'ai à traiter comporte souvent plus de 10 000 lignes.. Et ca aurait été un gain de temps pour moi.

J'ai essayé d'enregistrer une macro en appliquant la formule mais lorsque je fais ca, la macro vient me copier la formule dans la cellule et non pas la valeur. Du coup, il aut que je fasse un copier-coller des valeurs pour pouvoir travailler dessus.

d'autres idées ?
 
Re : Fonction Si en VBA

Re,

sinon en Vba par sub évènementielle de la feuille, une ébauche de code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Count = 1 Then
    If UCase(Target.Value) = "C" Then Target.Offset(0, -3) = Target.Offset(0, -1)
    If UCase(Target.Value) = "D" Then Target.Offset(0, -2) = Target.Offset(0, -1)
End If
End Sub

A+

edit: Bonjour Caillou
 
Re : Fonction Si en VBA

Salut

on peut aussi, par macro, écrire les formules puis les transformer en valeurs (trés rapide)
Code:
Sub va()
  Dim L As Long, P As Range
  L = Cells(Rows.Count, 5).End(xlUp).Row
  Range("B2:C" & L) = ""
  Range("B2:B" & L).FormulaR1C1 = "=IF(RC[3]=""C"",RC[2],"""")"
  Range("C2:C" & L).FormulaR1C1 = "=IF(RC[2]=""D"",RC[1],"""")"
  Range("B2:C" & L) = Range("B2:C" & L).Value  'on ne garde que les valeurs *
End Sub

* en supprimant cette ligne on garde les formules donc la possibilité de modifier ponctuellement des opérations sans relancer la procédure.
 
- 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

Discussions similaires

Réponses
10
Affichages
411
Réponses
2
Affichages
379
  • Question Question
Microsoft 365 MFC dans tableau
Réponses
2
Affichages
361
Retour