VBA variable a chaine de caractere

Résolu
la_bavaroise Messages postés 24 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 22 novembre 2005 - 14 sept. 2005 à 11:39
la_bavaroise Messages postés 24 Date d'inscription mercredi 14 septembre 2005 Statut Membre 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...

6 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
15 sept. 2005 à 11:23
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
3
VBFranceBlub Messages postés 27 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 19 septembre 2005
14 sept. 2005 à 11:50
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->
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
14 sept. 2005 à 11:57
'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.
0
la_bavaroise Messages postés 24 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 22 novembre 2005
14 sept. 2005 à 16:48
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bertholdt Messages postés 22 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 17 mai 2010
15 sept. 2005 à 11:23
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
0
la_bavaroise Messages postés 24 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 22 novembre 2005
15 sept. 2005 à 11:57
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)
0
Rejoignez-nous