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

pierrof

XLDnaute Occasionnel
Bonsoir tout le monde

Je voudrais à l'aide d'un code VBA réaliser une boucle me permettant de renseigner une case vide en fonction de la valeur d'une autre case, ci dessous le code faux. erreur next sans For
Merci de vos explications

Cordialement

For P = Cells.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
If Cells(P, "i").Value = "tata" And Cells(P, 10).Value = "" Then
Cells(P, 10).Value = "A"
Else
If Cells(P, "i").Value = "toto" And Cells(P, 10).Value = "" Then
Cells(P, 10).Value = "B"
Else
If Cells(P, "i").Value = "titi" And Cells(P, 10).Value = "" Then
Cells(P, 10).Value = "C"
Else
If Cells(P, "i").Value = "juju" And Cells(P, 10).Value = "" Then
Cells(P, 10).Value = "D"
Else
If Cells(P, "i").Value = "jojo" And Cells(P, 10).Value = "" Then
Cells(P, 10).Value = "E"
Else
If Cells(P, "i").Value = "gigi" And Cells(P, 10).Value = "" Then
Cells(P, 10).Value = "F"
End If
Next P
 
Re : Boucle For If Next

Bonjour.
Supprimez des caractères derrière les Else jusqu'à ce qu'ils forment le mot clé ElseIf avec le If de la ligne suivante ainsi ramenée sur la même ligne.

Ou mieux faite un Select Case Cells(P, "I").Value puis Case "Toto": etc. Terninez par End Select
 
Dernière édition:
Re : Boucle For If Next

Ben ça s'écrirait comme ça :
VB:
For P = Cells.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
   If IsEmpty(Cells(P, 10).Value) Then
      Select Case Cells(P, "i").Value
         Case "tata": Cells(P, 10).Value = "A"
         Case "toto": Cells(P, 10).Value = "B"
         Case "titi": Cells(P, 10).Value = "C"
         Case "juju": Cells(P, 10).Value = "D"
         Case "jojo": Cells(P, 10).Value = "E"
         Case "gigi": Cells(P, 10).Value = "F"
         End Select
      End If
   Next P
Mais ce n'est probablement pas comme ça que je ferais. J'utiliserais un tableau et un Dictionary.
 
Re : Boucle For If Next

Bonjour.
Oui, tout ce qui minimise le nombre de fois qu'on accède aux cellules est bon à prendre. C'est la construction de l'objet Range qui est couteuse en temps.
Il vaut mieux charger en une seule instruction des dizaines de milliers de cellules dans un tableau en mémoire que d'exécuter à peine une vingtaine d'instructions qui fabriquent chaque fois un objet Range représentant une seule cellule.
Une boucle ensuite sur les éléments du tableau n'est nullement pénalisante. Sauf s'il y a plusieurs boucles imbriquées.
Il y a aussi le système With Range(…): .FormulaR1C1 = "=…": .Value = .Value: End With qui minimise ce nombre d'accès.
Des Cells(…) dans une boucle c'est vraiment le pire. Même un For Each Cel In Range(…) est très légèrement préférable car au moins comme ça il ne fabrique qu'une seule fois l'objet Range qui représente toute la plage.
 
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

Discussions similaires

Réponses
5
Affichages
832
Réponses
4
Affichages
689
Réponses
8
Affichages
744
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour