VBA variable a chaine de caractere [Résolu]

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

Tuning Max 316 Messages postés mercredi 15 juin 2005Date d'inscription 31 août 2006 Dernière intervention - 15 sept. 2005 à 11:23
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
VBFranceBlub 27 Messages postés mercredi 22 octobre 2003Date d'inscription 19 septembre 2005 Dernière intervention - 14 sept. 2005 à 11:50
0
Utile
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->
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 14 sept. 2005 à 11:57
0
Utile
'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.
la_bavaroise 24 Messages postés mercredi 14 septembre 2005Date d'inscription 22 novembre 2005 Dernière intervention - 14 sept. 2005 à 16:48
0
Utile
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
bertholdt 22 Messages postés lundi 20 novembre 2000Date d'inscription 17 mai 2010 Dernière intervention - 15 sept. 2005 à 11:23
0
Utile
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
la_bavaroise 24 Messages postés mercredi 14 septembre 2005Date d'inscription 22 novembre 2005 Dernière intervention - 15 sept. 2005 à 11:57
0
Utile
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.