VBA variable a chaine de caractere [Résolu]

Messages postés
24
Date d'inscription
mercredi 14 septembre 2005
Dernière intervention
22 novembre 2005
- - Dernière réponse : la_bavaroise
Messages postés
24
Date d'inscription
mercredi 14 septembre 2005
Dernière intervention
22 novembre 2005
- 15 sept. 2005 à 11:57
Bonjour a tous,

voivi ma question: je suis en train de créer une macro pour qu'elle puisse automatiquement me détecter des fautes de données dans une feuille excel qui contient des données importées d´une BDD externe.

j'ai donc créer une variable qui détecte les fautes, mais je n'arrive pas a lui ajouter différentes sortes de fautes.
Je voudrais, par exemple, effacer les cellules qui contiennent soit un? ou une , ou autre chose.
Puis-je faire prendre a ma variable plusieurs valeurs?

Merci d'avance a ceux qui auront compris ma question et qui sauront y repondre.

Si ce n'est pas clair, n'hesitez pas a me le faire savoir, je joindrai mon code... le seul hic, c ke les variables sont en allemand, ms je joindrai la traduc a cote bien evidemment!!! (Jhabite a Munich)
Merci encore

la bavaroise...
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
316
Date d'inscription
mercredi 15 juin 2005
Dernière intervention
31 août 2006
1
3
Merci
fait plusieurs variables et rajoute OR dans ton code pour la recherche


Fehler_Text = "?"
Fehler_Text2 = "!"

For k = 1 To Sheet_Quelle_Ende
Zelleninhalt = Sheets(Sheet_Quelle).Range(Sheet_Quelle_col & k).Value
'maintenant voir, si le contenu de la cellule a une faute
If InStr(Zelleninhalt, Fehler_Text) Or InStr(Zelleninhalt, Fehler_Text2)Then

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Messages postés
27
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
19 septembre 2005
0
Merci
Salut;

Effectivement, tout ça n'est pas très clair.

D'après ce que j'ai compris, tu veux pouvoir récupérer la valeur d'une cellule de la feuille Excel et la tester pour savoir si elle contient une faute de frappe?

Pour affecter une valeur à une variable:

'Déclaration de la variable en type Variant pour accepter tous les caractères et tous les formats de données
Public MaVariable As Variant

'Affectation de la valeur d'une cellule à ta variable
MaVariable = Cells(CoordonnéeX,CoordonnéeY)


<-Blub->
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
20
0
Merci
'Déclaration de la variable en type Variant pour accepter tous les caractères et tous les formats de données
Public MaVariable As Variant

'Affectation de la valeur d'une cellule à ta variable
MaVariable = Cells(CoordonnéeX,CoordonnéeY)



If Instr(1,MaVariable,"?",vbTextCompare) > 0 Then

Cells(CoordonneeX,CoordonneeY).FormulaR1C1 = ""

EndIf





If Instr(1,MaVariable,",",vbTextCompare) > 0 Then

Cells(CoordonneeX,CoordonneeY).FormulaR1C1 = ""

EndIf


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
24
Date d'inscription
mercredi 14 septembre 2005
Dernière intervention
22 novembre 2005
0
Merci
ok en fait tu as bien cerne mon pb, malgre mon langage assez approximatif en effet!!

en fait, le code que tu mas donne ne peut pas fonctionner car je ne sais pas ou seront precisement les fautes, tt dependera a chaque fois de lactualisation des donnees. cest pour cela que je ne peux pas affecter la valeur d'une cellule a ma variable, seulement une colonne (je sais que les noms a chercher st seulement ds la colonne C)
voici mon code:

Option Explicit
Public Sheet_Quelle, Sheet_Quelle_col, Sheet_Quelle_Ende
'(Quelle=source)


Sub Finde_Fehler() '(macro trouver_faute)


'***********************************************************************************
'Variables a declarer
'******************************************************************
Sheet_Quelle = "WWH" 'le nom de ma Worksheet, ou je veux trouver la derniere 'ligne
Sheet_Quelle_col = "C" la colonne de ma Worksheet, ou je veux trouver la 'derniere ligne

Call letzte_zeile_Quelle ' la derniere ligne, qui sera trouve par Public Sub 'letzte_zeile grace a lordre Call


Sheets(Sheet_Quelle).Select


Dim k, Zelleninhalt, Fehler_Text As Variant


Fehler_Text = "?"


For k = 1 To Sheet_Quelle_Ende
Zelleninhalt = Sheets(Sheet_Quelle).Range(Sheet_Quelle_col & k).Value
'maintenant voir, si le contenu de la cellule a une faute
If InStr(Zelleninhalt, Fehler_Text) Then
'la, jutilise la fonction InStr
'si il y a bien une faute, alors
Rows(k).Delete 'Die Zeile löschen, da ein Fehler drin ist
k = k - 1
End If
Next k

End Sub


Public Sub letzte_zeile_Quelle()
Sheets(Sheet_Quelle).Select
Sheet_Quelle_Ende = 0
Sheet_Quelle_Ende = ActiveSheet.Cells(Rows.Count, Sheet_Quelle_col).End(xlUp).Row

End Sub

Voila,
mon seul souci est d'arriver a dire quil peut y avoir differentes fautes (cf en rouge) et en fait donner le choix a cet variable detre soit ? ou, etc...

Bon si tu vois pas ce ke je veux dire, ya pas de souci, te prends pas la tete,
en tt cas, merci qd meme pour ta gentillesse!
Ciao,
la bavaroise
Messages postés
22
Date d'inscription
lundi 20 novembre 2000
Dernière intervention
17 mai 2010
0
Merci
Salut

Utilise $ pour remplir une variable avec une valeur String.
Par exemple
cellule$ = Cell(X,Y).Value

Quelle que soit le type de valeur contenu dans les cellules, la valeur sera stockée dans cellule$ au format string (chaîne de caractères).
Ensuite, tu peux utiliser InStr sans problème.

Dans le code que tu as posté, tu écris :

If InStr(Zelleninhalt, Fehler_Text) Then ...

Mais tu ne compares rien !
En fait, il faut écrire

If InStr(1, cellule$, ton paramètre "?", vbTextCompare) <> 0 Then ...

Bon courage

Pierrick
Messages postés
24
Date d'inscription
mercredi 14 septembre 2005
Dernière intervention
22 novembre 2005
0
Merci
Salut a tous,

merci de mavoir repondu, c genial: ca marche Cap'taine!! Alors encore merci beaucoup, les plus petites difficultes st peut etre les + ennuyantes je crois....
Merci particulierement a Tuning Max et a Berthold pour leur precieux conseils!!!

Bon week-end a vous, je trinquerai à votre santé ce week-end, c'est l'ouverture de l'Oktoberfest (Fete de la biere a Munich)

Bonne continuation,

Caroline (alias la_bavaroise)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.