Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL pour MAC Boucle VBA Matrice

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 !

Makovitch

XLDnaute Nouveau
Hello !
Voila je suis débutant en VBA et j'ai besoin d'un petit coup de pouce car je bloque sur mon code 🙁
J'aimerai réaliser une boucle qui me permettrai de réaliser une succession d'actions, voici mon code:

le code ci-dessus remplit correctement les cases sur Excel mais sans boucle, mon code risquerait d'être très très long lol
Savez-vous comment je pourrai optimiser cela ?
Merci d'avance de votre aide !



 
Bonjour Makovitch,
Un jpeg c'est pas génial pour du code, utilisez les balises </> c'est plus lisible, et surtout permet un copié collé.
Auriez vous un fichier test ? Ça éviterait de reconstruire un fichier ... et de se retaper le code. 🙂
 
Bonjour @Makovitch Welcome to XLD ! , @sylvanu , le Forum

J'ai pris la liberté de simuler un fichier, je pense que c'est ce que veut notre ami Makovvitch (mais c'est vrai qu'avec un p'ti fichier exemple ce serait plus simple...)
Deux macros en Loop, une basic et une plus approfondie ...

Bonne Journée
@+Thierry
 

Pièces jointes

Bonjour sylvanu et Thierry,
merci de votre précieuse aide j'ai pu réussir à coder ce que je voulais !
Néanmoins savez-vous comment je peux colorer en rouge toutes les cellules de la plage contenant une valeur supérieur à 0 ?
merci encore 🙂
 
Une MFC est automatique et ce se remet à jour en permanence.
Dans le fichier de Thierry, mettez 1 en E10 la cellule se colore automatiquement.
Pour modifier la couleur vous cliquez une cellule puis faites Acceuil/Mise en Forme Conditionnelle/gérer les règles/Modifier la règle/Format.

Sinon en VBA vous remplacez la ligne du fichier de Thierry
VB:
WSSource.Cells(SR, SC).Value = CellSourceR.Offset(0, -1).Value
par
Code:
            WSSource.Cells(SR, SC).Value = CellSourceR.Offset(0, -1).Value ' Valeur'
            WSSource.Cells(SR, SC).Interior.Color = RGB(255, 0, 0)         ' Fond rouge'
            WSSource.Cells(SR, SC).Font.Color = RGB(0, 0, 0)               ' Police noire'
            WSSource.Cells(SR, SC).Font.Bold = True                        ' En gras'
 
j'ai pu résoudre ce problème mais je bloque sur un autre désormais lol..

j'aimerais mettre en rouge les cellules dont les valeurs sont supérieurs à 0 au dessus de la diagonale et en vert celles qui sont supérieurs à 0 mais situés en dessous de la diagonale, voici mon code :

i = 4

j = Range("C3:R19").Rows.Count

For i = 4 To j

If Cells(i, i - 1).Value > "0" Then

Cells(i, i - 1).Interior.Color = vbGreen

End If

Next I

Mon code fonctionne bien mais il ne prend pas en compte la cellule active ci-dessous
 
Cells(i, i - 1) va définir la diagonale non tout ce qui est sous la diagonale.
Pour ça il vous faut deux variables Ligne Colonne et vérifier si le N° ligne est plus grand que le N° de colonne. ( cela suppose une matrice carré )
 
Vous faites deux boucles avec par ex L pour les lignes et C pour les colonnes comme variables.
Si L>C alors vous êtes sous la diagonale, Sinon vous êtes au dessus.
( Si ça commence en 1,1 bien sur, sinon il faut faire le décalage. )
 
Re Bonjour @Makovitch , @sylvanu, le Forum

Pas besoin de faire un autre loop, il y a tous les éléments déjà incorporés pour faire ceci in "one shot" dans les codes proposés précédemment.

Voici une version complémemtaire.

Bon aprèm
@+Thierry
 

Pièces jointes

- 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
18
Affichages
1 K
Réponses
17
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…