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

XL 2019 XL 2021 - VBA : boucles et conditions

LoXaRoX

XLDnaute Nouveau
Bonjour,

Je suis débutant sur VBA.
J'ai pu faire des macros et les modifier, mais je ne suis pas encore au stade de la vraie programmation en Visual Basic.

Sur une colonne, j'ai besoin de vérifier si le salarié est en CDI ou CDD pour appliquer un calcul sur son salaire.

Quelqu'un pourrait-il m'aider à transformer mon "algorithme" en VB s'il vous plait ?

Définition variable = Cellule As Range
Sélectionner Cellule G2
Pour chaque Cellule dans Feuil1ColonneG = non vide (For Each Cellule In Range("G:G")
SI Cellule = CDI
ALORS Calcul
SINON
SI Cellule = CDD
ALORS ne rien faire
SI Cellule = vide
ALORS
NEXT

Merci d'avance,
 
Solution
Bonjour,

Pour faire Colonne D - Colonne F + 10% il y a deux possibilités :
- Cells(Cell.Row, 4) - Cells(Cell.Row, 6) (Cells est une commande VBA, Cell est notre variable)
- Cell.Offset(0, -3) - Cell.Offset(0. -1)
Je préfère Offset parce que c'est plus joli mais les deux fonctionnent.
Pour le 10%, c'est 10% d'une valeur ou juste ajouter 0.1 ?

Pour sortir de la boucle avant qu'elle n'ait fini de s'exécuter entièrement, utiliser l'instruction Exit For.

Bonne journée,

xUpsilon

XLDnaute Accro
Bonjour,

Ceci ?
VB:
'Définition variable = Cellule As Range
Dim Cell
'Sélectionner Cellule G2 -> Pas nécessaire
'Pour chaque Cellule dans Feuil1ColonneG = non vide (For Each Cellule In Range("G:G")
For each Cell in Sheets("Feuil1").Columns("G:G")
'SI Cellule = CDI et Cellule non vide (Si c'est CDI c'est forcément non vide)
    If Cell.Value = "CDI" Then
'ALORS Calcul
        Calcul
'SINON -> Pas nécessaire s'il ne faut rien faire, fin du If
    End if
'SI Cellule = vide
'ALORS -> Alors que faire ?
Next Cell

Bonne journée,
 

LoXaRoX

XLDnaute Nouveau
Alors voilà comment j'ai progressé grâce à votre code :

VB:
'Définition de la variable
Dim Cell

'Pour chaque cellule de la Colonne G
For each Cell in Sheets("Feuil1").Columns("G:G")
'SI Cell = CDI ALORS
    If Cell.Value = "CDI" Then
' CALCUL
'        Colonne D - Colonne F + 10%
    End if
'SI Cellule = vide
'ALORS -> Arreter la boucle
Next Cell

Qu'en pensez-vous ?
 

xUpsilon

XLDnaute Accro
Bonjour,

Pour faire Colonne D - Colonne F + 10% il y a deux possibilités :
- Cells(Cell.Row, 4) - Cells(Cell.Row, 6) (Cells est une commande VBA, Cell est notre variable)
- Cell.Offset(0, -3) - Cell.Offset(0. -1)
Je préfère Offset parce que c'est plus joli mais les deux fonctionnent.
Pour le 10%, c'est 10% d'une valeur ou juste ajouter 0.1 ?

Pour sortir de la boucle avant qu'elle n'ait fini de s'exécuter entièrement, utiliser l'instruction Exit For.

Bonne journée,
 

LoXaRoX

XLDnaute Nouveau
Merci encore pour votre aide et désolé pour mon absence (autre projet et maladie...)
La macro demandé par l'utilisateur n'a finalement pas besoin de cette combinaison de boucle et de conditions… En tout cas, pour le moment...

Bonne journée !
 

Discussions similaires

Réponses
5
Affichages
580
Réponses
1
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…