Remplacer la valeur d'une colonne en testant le texte dune autre
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!
J'ai une macro pour effectué un nettoyage automatique de ma feuille. Dans ma colonne E, se retrouve des lectures en mètre et parfois il s'y retrouve des valeurs non numériques comme la lettre x.
J'ai commencé un code mais je n'y arrive pas totalement!
Je détecte la valeur x dans ma colonne E, ce qui fonctionne très bien. Ensuite je veux tester le texte dans la colonne O sur la même ligne où la valeur x à été découverte. Si le texte correspond à "plein d'eau" la valeur de la cellule de la colonne E deviendras alors 0.
Voici mon code:
http://www.cjoint.com/c/FDbprGa7qfo
Merci beaucoup pour votre aide!
J'ai une macro pour effectué un nettoyage automatique de ma feuille. Dans ma colonne E, se retrouve des lectures en mètre et parfois il s'y retrouve des valeurs non numériques comme la lettre x.
J'ai commencé un code mais je n'y arrive pas totalement!
Je détecte la valeur x dans ma colonne E, ce qui fonctionne très bien. Ensuite je veux tester le texte dans la colonne O sur la même ligne où la valeur x à été découverte. Si le texte correspond à "plein d'eau" la valeur de la cellule de la colonne E deviendras alors 0.
Voici mon code:
Sub replace() Dim DerLig As Long Dim plage As Variant Dim cible As String DerLig = Range("E" & Rows.Count).End(xlUp).Row plage = Range("E2" & ":E" & DerLig) cible = "plein d'eau" For Each r In plage If r = "x" Or r = "X" Then If InStr(1, cible) = False Then MsgBox "non" Else ActiveCell.Value = "0" End If MsgBox "Valeur X trouvé!" End If Next r End SubVoici aussi mon fichier.
http://www.cjoint.com/c/FDbprGa7qfo
Merci beaucoup pour votre aide!
A voir également:
- Vba remplacer une valeur par une autre dans une colonne
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Remplacer disque dur par ssd - Guide
- Excel additionner une colonne - Guide
- Figer une colonne excel - Guide
2 réponses
Bonsoir,
1- déclarer :
2- remplacer :
Par :
Cel.Offset(ligne, Colonne) décale, à partir de la cellule Cel d'autant de ligne et/ou de colonne qu'indiqué dans l'Offset.
Attention aux types de données entre cible et r.Offset(0, 10).
Si toutes les 2 en String, pas de souci...
EDIT :
remplacer :
par :
A+
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
1- déclarer :
Dim r As Range
2- remplacer :
If InStr(1, cible) = False Then
Par :
If r.Offset(0, 10) = cible Then
Cel.Offset(ligne, Colonne) décale, à partir de la cellule Cel d'autant de ligne et/ou de colonne qu'indiqué dans l'Offset.
Attention aux types de données entre cible et r.Offset(0, 10).
Si toutes les 2 en String, pas de souci...
EDIT :
remplacer :
If r = "x" Or r = "X" Then
par :
If UCase(r.Value) = "X" Then
A+
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
J'ai effectué les modifications mais j'ai une erreur d'exécution 424 à la ligne . La valeur renvoyé de "r" en "nothing" avec un espion sur la valeur de "r".
Voici le nouveau code:
Merci!
Une fois n'est pas coutume, l'erreur vient d'ailleurs...
Ce n'est plus r le souci, mais plage.
En déclarant plage As Variant et en lui affectant un Range (plage = Range("E2" & ":E" & DerLig)) tu en fais, en réalité, une variable tableau encapsulée dans un Variant.
Tu as donc deux choix :
- soit tu travailles avec des variables tableaux et donc là tu oublies ta boucle For Each pour te satisfaire d'une boucle For Next ou Do Loop,
- soit tu travailles avec des Range, mais il faut affecter le Range à plage pour pouvoir utiliser ta boucle For Each.
A noter : For Each permet de boucler sur une collection d'objets, pas sur un tableau...
Voici pour toi :
Méthode avec For Each sur un Range
Méthode avec For Next sur un tableau
Vérifier les colonnes E et O, ne suis pas sur de moi...
J'ai essayé les deux versions, la première version fonctionne bien, par contre, il y a une erreur dans la deuxième à la ligne .
Je ne comprend pas vraiment la distinction entre les 2 options, collections d'objets?
Merci!
Objets, collections d'objets, sont les débuts de la programmation VBA sous Excel.
Une feuille est un objet, un range aussi...
Lis quelques tutos à ce sujet sur Internet, ça va vite à maitriser.