Accueil > Forum > > > > VBA Probleme de Boucle If
VBA Probleme de Boucle If
jeudi 15 septembre 2005 à 16:02:25 |
VBA Probleme de Boucle If

la_bavaroise
|
Bonjour à tous,  mon probleme est certainement tres simple et evident... Voici, ma boucle: If InStr(Zelleninhalt, F_T) Or InStr(Zelleninhalt, F_T2) Then Rows(k).Delete 'Die Zeile löschen, da ein Fehler drin ist k = k - 1 'k wieder einen zurücksetzten End If le probleme est ke jai environ 50 variables F_T, et lorsque je retourne a la ligne, evidemment ma boucle est cassee... Comment faire? Merci d'avance pro de la prog!! Caroline 
|
|
jeudi 15 septembre 2005 à 16:12:15 |
Re : VBA Probleme de Boucle If
|
jeudi 15 septembre 2005 à 17:06:41 |
Re : VBA Probleme de Boucle If

crenaud76
|
Petite précision ... "If" n'est pas une instruction de boucle !!! C'est une instruction de test !!
|
|
jeudi 15 septembre 2005 à 17:28:00 |
Re : VBA Probleme de Boucle If

la_bavaroise
|
Salut les gars, c gentil, merci de m'eduquer en voca, c'est admirable!
En fait, je ne peux pas utiliser de tableur. ma macro sert à detecter automatiquement des fautes de frappe provenant dune BDD externe et dont les données sont exportees dans une feuille excel. Pour les detecter, jai donc creer cette variable(F_T). La seule chose qui est sure, cest que les fautes sont a detectees ds la colonne C, le reste, cad les cellules precises, je ne peux les connaitre a l'avance, tout depend de l'actualisation
Voici un extrait de 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, Dim k, Zelleninhalt, F_T, F_T2, F_T3, F_T4, F_T5, F_T6, F_T7, F_T8 'F_T=Fehler_Text qui veut dire faute_texte F_T = "," F_T2 = "?" F_T3 = "topcars" F_T4 = "allbank" F_T5 = "axa" F_T6 = "fs" F_T7 = "creditplus" F_T8 = "devk"
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, F_T) Or InStr(Zelleninhalt, F_T2) Or InStr(Zelleninhalt, F_T3) Or InStr(Zelleninhalt, F_T4) Or InStr(Zelleninhalt, F_T5) Or InStr(Zelleninhalt, F_T6) Or InStr(Zelleninhalt, F_T7) Or InStr(Zelleninhalt, F_T8)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, donc je ne sais comment faire pour ne pas casse linstruction de test If? Mais si je m'exprime mal, n'hesitez pas a me le faire savoir,
Aller, merci d'avance,
Ciao, la bavaroise
|
|
jeudi 15 septembre 2005 à 18:15:30 |
Re : VBA Probleme de Boucle If

Celeborn
|
Bonjour,
Je pense avoir compris ta question. If InStr(Zelleninhalt, F_T) Or InStr(Zelleninhalt, F_T2) Or InStr(Zelleninhalt, F_T3) _ Or InStr(Zelleninhalt, F_T4) Or InStr(Zelleninhalt, F_T5) Or InStr(Zelleninhalt, F_T6) _ Or InStr(Zelleninhalt, F_T7) Or InStr(Zelleninhalt, F_T8)Then
Le secret est dans le caractére " _ " ! :-)
Mais j'ai tout de même peur que de répéter 50 fois ce test dans le même " If " générera une phrase trop longue pour VBA Pourquoi ne pas réaliser ce test de cette façon ?
Test = InStr(Zelleninhalt, F_T1) Test = Test + InStr(Zelleninhalt, F_T2) Test = Test + InStr(Zelleninhalt, F_T3) ..... If Test then ....
Virtuellement vôtre !!! ;-))
|
|
jeudi 15 septembre 2005 à 21:25:27 |
Re : VBA Probleme de Boucle If

crenaud76
|
C'est surtout qu'il faudrait plutot travailler avec un tableau plutot qu'avec 50 variables !!!
Christophe
|
|
jeudi 15 septembre 2005 à 22:29:33 |
Re : VBA Probleme de Boucle If

us_30
|
Réponse acceptée !
Bah ! oui ! Utilise un tableau ! c'est évident ! comme le dit Crenaud du 76 !
Rapidement ton code devient :
Dim F_T(50) as string
F_T(1)= "," F_T(2) = "?" F_T(3) = "topcars" F_T(4) = "allbank" F_T(5) = "axa" F_T(6) = "fs" F_T(7) = "creditplus" F_T(8) = "devk"
...etc...
Puis :
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
for t=1 to 8 If InStr(Zelleninhalt, F_T(t)) Then Rows(k).Delete k = k - 1 'permet de revenir sur la bonne ligne qui vient d'être remontée End If next t
Next k
Amicalement, Us.
|
|
jeudi 15 septembre 2005 à 23:07:17 |
Re : VBA Probleme de Boucle If

crenaud76
|
Sauf qu'à mon avis, il faudrait rajouter un "Exit For" après le k = k -1 (inutile de continuer les tests si une valeur à répondu à notre attente)
Et je pense qu'on peut se passer de la boucle for de 1 à 8 ... En fait, il y a même plus de tableau pour le coup ... Je ferais cela : F_T = ", ? topcars allbank axa fs creditplusdevk" ...etc...
Puis :
For k = 1 To Sheet_Quelle_Ende Zelleninhalt = Sheets(Sheet_Quelle).Range(Sheet_Quelle_col & k).Value If InStr(Zelleninhalt, F_T) Then Rows(k).Delete k = k - 1 End If Next k
Au cas ou les différentes val recherché pourrait contenir un espace, il faudrat modifier légèrement la construction de la var F_T en utilsant par exemple un vbNullChar plutot que l'espace ...
F_T = "," & vbNullChar & "?" & vbNullChar & "topcars" & vbNullChar & "allbank" & vbNullChar & "axa" & vbNullChar & "fs" & vbNullChar & "creditplusdevk"
Comme ca, ca blinde le truc on est peinard ...
|
|
vendredi 16 septembre 2005 à 01:59:32 |
Re : VBA Probleme de Boucle If

valtrase
|
Salut, On reprend tout du début, ton prob vient du fait que tu effaces ta ligne en partant du début. Donc je te conseille deFaire le contraire For k = Sheet_Quelle_Ende to 1 step -1 ......... ......... ......... Donc tu gardes ton code du début et tu testes cette modif
Cordialement, Jean-Paul ______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
|
|
vendredi 16 septembre 2005 à 02:12:45 |
Re : VBA Probleme de Boucle If

valtrase
|
Re, Désolé pour la répet. Si tu as beaucoup de fautes à tester je te conseille le select case en lieu et place de ton If .......
Select case Zelleninhalt Case Is = ",", "?", "topcars", "allbank" ....etc.... Rows(k).Delete Case Else End Select Tu peux même le faire sur plusieurs lignes ....
Cordialement, Jean-Paul ______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
|
|
Cette discussion est classée dans : vba, boucle, probleme, instr, zelleninhalt
Répondre à ce message
Sujets en rapport avec ce message
Probleme boucle de textbox en vba [ par ptij ]
Je suis sur un formulaire VBA pour une feuille Excel, et lorsque tous les textbox de ce formulaire sont remplis, je dois les insérer dans ma feuille E
PROBLEME BOUCLE EN VBA EXCEL / NIVEAU TRES DEBUTANT [ par CROCHU ]
cacheux
probleme de programation vba exel [ par inco13 ]
bonjour,je suis entrein de realiser un petit programme en vba sur exel qui me permettra lorsque je saisie un nombre(nb de place dans un avion) dans un
[VBA] - Probleme de caractères [ par jeyjey1 ]
Bonjour, J'ai un bout de code qui fonctionne, mais pas comme je veux, le probleme se situe ligne 1 dans ma condition comment dire que si ma textbox co
probleme de boucle [ par darkspoilt ]
Bonjour,J'ai un probleme de bouclue il ne veut pas sortir.D'access j'ouvre au préalable une feuille Excel.Le but de cette boulce est de de trouver la
Vba probleme bete [ par falarinil ]
Bonjour je vous ecris pour vous posez quelque petit probleme- je n'arrive pas a faire remplir mes textbox Voila j'ai un formulaire type bon de co
fonction si et boucle vBA [ par loulou411 ]
Bonjour, <p class="MsoNormal" sty
probleme avec mon application vba pour excel [ par NDOUKI ]
Slt à tous ; depuis un moment je developpe une application à VBA pour excel. mais seulement j'ai un grand problème.En fait je n'arrive pas à trouve
Probleme avec For each en VB6 [ par MIKYMAXSP28 ]
Bonsoir a tous,Je souhaite utiliser une boucle For Each pour récupèrer le nom de chaque control de mon formulaire.Mon problème est que ma boucle For E
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|