Afficher un résultat en fonction de la valeur de 2 colonnes
Résolu/Fermé
simon7339
Messages postés
68
Date d'inscription
lundi 10 mars 2014
Statut
Membre
Dernière intervention
10 avril 2018
-
Modifié par Whismeril le 30/12/2014 à 23:31
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 déc. 2014 à 08:14
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 déc. 2014 à 08:14
A voir également:
- Afficher un résultat en fonction de la valeur de 2 colonnes
- Fonction si et - Guide
- Word 2 colonnes - Guide
- Word numéro de page 1/2 - Guide
- Afficher mot de passe wifi android - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
1 réponse
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 31/12/2014 à 08:14
Modifié par pijaku le 31/12/2014 à 08:14
Bonjour,
Tu n'es pas très bien parti.
Tu dis :
Puis
Or ActiveCell ne peut pas être à la fois en colonne A ET en colonne B, ActiveCell étant LA (et l'unique) cellule active.
Il te faut, pour rester simple, boucler, en effet, sur toutes les cellules de ta colonne A.
Pour cela, il te faut, au préalable, déterminer qu'elle est la première cellule et qu'elle est la dernière.
La première cellule, ce n'est pas difficile, c'est toi qui la fixe. Par exemple Range("A2") (qui s'écrit également Cells(2, 1)). Pour la dernière cellule, il te faut la déterminer. Pour cela il existe plusieurs méthodes (voir cette fiche pratique). En voici une :
Donc, après cela, tu peux boucler sur toutes les cellules entre A-2 et A-DernLign.
Voici deux façons de procéder, simples, mais il y en a d'autres...
Avec la syntaxe Range
Avec la syntaxe Cells
Nota : Dans les syntaxes :
Nota 2 : Il peux s'avérer nécessaire, dans certains cas, de référencer également la feuille.
Pour cela, remplacer :
EDIT : j'ai ajouté les .Value pour te montrer que cela ne change rien...
🎼 Cordialement,
Franck 🎶
Tu n'es pas très bien parti.
Tu dis :
Dim x As Integer "Pour la colonne B" Dim y As String "Pour la colonne A"
Puis
x = ActiveCell.Value y = ActiveCell.Value
Or ActiveCell ne peut pas être à la fois en colonne A ET en colonne B, ActiveCell étant LA (et l'unique) cellule active.
Il te faut, pour rester simple, boucler, en effet, sur toutes les cellules de ta colonne A.
Pour cela, il te faut, au préalable, déterminer qu'elle est la première cellule et qu'elle est la dernière.
La première cellule, ce n'est pas difficile, c'est toi qui la fixe. Par exemple Range("A2") (qui s'écrit également Cells(2, 1)). Pour la dernière cellule, il te faut la déterminer. Pour cela il existe plusieurs méthodes (voir cette fiche pratique). En voici une :
Dim DernLign As Long DernLign = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
Donc, après cela, tu peux boucler sur toutes les cellules entre A-2 et A-DernLign.
Voici deux façons de procéder, simples, mais il y en a d'autres...
Avec la syntaxe Range
Dim Lign As Long, DernLign As Long 'on détermine la dernière ligne DernLign = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 'boucle de la ligne 2 à la dernière For Lign = 2 To DernLign 'si la cellule A-Lign = OUT Alors If Range("A" & Lign) = "OUT" Then 'ICI ton traitement si A = OUT Else 'ICI ton traitement si A <> OUT 'en gros on ne fait rien, donc le Else est inutile End If 'Ligne suivante Next Lign
Avec la syntaxe Cells
Dim Lign As Long, DernLign As Long 'on détermine la dernière ligne DernLign = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 'boucle de la ligne 2 à la dernière For Lign = 2 To DernLign 'si la cellule A-Lign = OUT Alors If Cells(Lign, 1) = "OUT" Then 'ICI ton traitement si A = OUT Else 'ICI ton traitement si A <> OUT 'en gros on ne fait rien, donc le Else est inutile End If 'Ligne suivante Next Lign
Nota : Dans les syntaxes :
Range("A" & Lign) = "OUT"et
Cells(Lign, 1) = "OUT"je n'ai pas ajouté le
.Value. En effet, en VBA, Value est la propriété par défaut. Tu peux l'ajouter pour une meilleure compréhension du code.
Nota 2 : Il peux s'avérer nécessaire, dans certains cas, de référencer également la feuille.
Pour cela, remplacer :
Range("A" & Lign) = "OUT"et
Cells(Lign, 1) = "OUT"par :
Sheets("Feuil189").Range("A" & Lign).Value = "OUT"et
Sheets("Feuil189").Cells(Lign, 1).Value = "OUT"s'il s'agit de la feuille nommée : Feuil189...
EDIT : j'ai ajouté les .Value pour te montrer que cela ne change rien...
🎼 Cordialement,
Franck 🎶