XL 2016 Affectation de données dans certaines cellule selon des conditions.

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 !

manu49300

XLDnaute Nouveau
Bonjour,

Je ne trouve pas de solution avec les fonctions "=Si.conditions" ou bien la fonction "RechercheV" car trop de critères.
Je souhaite affecter des données dans un tableau selon des conditions prédéfinies en amont. Je vous joins un classeur pour exemple. Merci.
 

Pièces jointes

Solution
Re,
Il eût été pertinent de demander ça dès le départ, les approches sont très différentes.🙂
En PJ un essai avec :
VB:
Sub Compte()
    Dim DC%, DL%, PL%, Plage As Range
    DC = Cells(2, Columns.Count).End(xlToLeft).Column   ' Dernière colonne
    DL = Range("A65500").End(xlUp).Row                  ' Dernière ligne
    PL = 14                                             ' Première ligne à traiter, à modifier suivant tableau
    Application.ScreenUpdating = False
    Set Plage = Range(Cells(PL, "C"), Cells(DL, DC))
    Plage.FormulaR1C1 = "=INDEX(R3C:R8C,MATCH(RC1,R3C2:R8C2,1))"    ' Insère formules : =INDEX(C$3:C$8;EQUIV($A14;$B$3:$B$8;1)), Formule à modifier si tableau des limites à varier en longueur.
    Plage.Value = Plage.Value...
Re,
Il eût été pertinent de demander ça dès le départ, les approches sont très différentes.🙂
En PJ un essai avec :
VB:
Sub Compte()
    Dim DC%, DL%, PL%, Plage As Range
    DC = Cells(2, Columns.Count).End(xlToLeft).Column   ' Dernière colonne
    DL = Range("A65500").End(xlUp).Row                  ' Dernière ligne
    PL = 14                                             ' Première ligne à traiter, à modifier suivant tableau
    Application.ScreenUpdating = False
    Set Plage = Range(Cells(PL, "C"), Cells(DL, DC))
    Plage.FormulaR1C1 = "=INDEX(R3C:R8C,MATCH(RC1,R3C2:R8C2,1))"    ' Insère formules : =INDEX(C$3:C$8;EQUIV($A14;$B$3:$B$8;1)), Formule à modifier si tableau des limites à varier en longueur.
    Plage.Value = Plage.Value                                 ' Copier coller valeur
    Application.ScreenUpdating = True
End Sub
A noter que :
1- La liste des limites est figées comme l'exemples à 6 limites.
2- Le tableau à traiter commence en ligne 14.
Sinon adapter la macro.
 

Pièces jointes

Re,
Il eût été pertinent de demander ça dès le départ, les approches sont très différentes.🙂
En PJ un essai avec :
VB:
Sub Compte()
    Dim DC%, DL%, PL%, Plage As Range
    DC = Cells(2, Columns.Count).End(xlToLeft).Column   ' Dernière colonne
    DL = Range("A65500").End(xlUp).Row                  ' Dernière ligne
    PL = 14                                             ' Première ligne à traiter, à modifier suivant tableau
    Application.ScreenUpdating = False
    Set Plage = Range(Cells(PL, "C"), Cells(DL, DC))
    Plage.FormulaR1C1 = "=INDEX(R3C:R8C,MATCH(RC1,R3C2:R8C2,1))"    ' Insère formules : =INDEX(C$3:C$8;EQUIV($A14;$B$3:$B$8;1)), Formule à modifier si tableau des limites à varier en longueur.
    Plage.Value = Plage.Value                                 ' Copier coller valeur
    Application.ScreenUpdating = True
End Sub
A noter que :
1- La liste des limites est figées comme l'exemples à 6 limites.
2- Le tableau à traiter commence en ligne 14.
Sinon adapter la macro.
Je l'ai adapté à mon tableau. Ça a l'air de fonctionner. Merci beaucoup pour votre aide.
 
- 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
0
Affichages
237
Réponses
7
Affichages
281
Retour