or et and en visual basic help
Dernière réponse : dans Programmation
slt j'ai besoin de savoir comment je pourrai coder un ou en visual basic svp ex :
If Cel.Offset(i, 2) = ("toto") ou ("titi") Then
j'ai essayer pour and ca marche mais c pas se que je veut et "or " sa va pas alors svp dites moi se que je dit mettre . merci
If Cel.Offset(i, 2) = ("toto") ou ("titi") Then
j'ai essayer pour and ca marche mais c pas se que je veut et "or " sa va pas alors svp dites moi se que je dit mettre . merci
Autres pages sur : and visual basic help
Lassé par la pub ? Créez un compte
bien sur que si ça va or :
expression1 et expression2 sont deux expressions qui peuvent être évalués à True ou False, par exemple
dans ton cas il faut plutot
if expression1 or expression2 then
expression1 et expression2 sont deux expressions qui peuvent être évalués à True ou False, par exemple
est UNE SEULE expression.
Cel.Offset(i, 2) = ("toto")
dans ton cas il faut plutot
if Cel.Offset(i, 2) = "toto" or Cel.Offset(i, 2) = "Titi"
ouai c bon sa marche merci
mais maintenant g un nouveau probleme quand on fait un "if" il faut tout logé sur une ligne et moi j'ai environ 100 "or" a mettre dans man "if" et quand jarrive au bou de la ligne j'ai plus assez de place comment je peut faire .peut etre il y a une option qui donne la possibilité de faire une ligne infini . si vous avez la soluce aidez moi svp encore merci
mais maintenant g un nouveau probleme quand on fait un "if" il faut tout logé sur une ligne et moi j'ai environ 100 "or" a mettre dans man "if" et quand jarrive au bou de la ligne j'ai plus assez de place comment je peut faire .peut etre il y a une option qui donne la possibilité de faire une ligne infini . si vous avez la soluce aidez moi svp encore merci
Oui, Nova, c'est comme ça.
Gizmo, excuse-moi, mais si tu en es à dépasser les capacités de VB, c'est que soit tu as vraiment une bonne raison (peu propable), soit tu as une factorisation possible (très probable), soit tu as une grosse erreur de logique dans ton programme (Je ne te connais pas mais si il y a caca dans ton pseudo, c'est peut être en rapport avec ta façon de programmer
).
Le cas intéressant est bien entendu la factorisation : Se servir des intervalles, des inégalités, des lois de morgan...
Gizmo, excuse-moi, mais si tu en es à dépasser les capacités de VB, c'est que soit tu as vraiment une bonne raison (peu propable), soit tu as une factorisation possible (très probable), soit tu as une grosse erreur de logique dans ton programme (Je ne te connais pas mais si il y a caca dans ton pseudo, c'est peut être en rapport avec ta façon de programmer
).Le cas intéressant est bien entendu la factorisation : Se servir des intervalles, des inégalités, des lois de morgan...
Faut aussi mettre [/code] à la fin de ton code. Kangol serait là, il serait en train de te taper sur les doigts.
pour qu'on puisse t'aider, il faut qu'on connaisse tes conditions, ce qu'il y a entre les "" car là ça sert franchement à rien ce que tu nous à mis.
T'as rempli tout une ligne en testant des conditions sur une seule case!!! doit vraiment y avoir un problème.
Tes trucs genre "c'est classé top secret, secret d'état, sur la tete de ma mère faut pas que j'y montre", à part si il contienne une facon de trouver qui à assassiné Kennedy, ca craint rien ici...
louloukg a dit :
If Not (Cel.Offset(i, 2) ="" Or Cel.Offset(i, 2) ="" Or Cel.Offset(i, 2) ="" Or................Cel.Offset(i, 2) ="") ThenT'as rempli tout une ligne en testant des conditions sur une seule case!!! doit vraiment y avoir un problème.
Tes trucs genre "c'est classé top secret, secret d'état, sur la tete de ma mère faut pas que j'y montre", à part si il contienne une facon de trouver qui à assassiné Kennedy, ca craint rien ici...
c ke chui en stage et les données des sur une CPAM mais bon je pense pas que ca gene alors voila tout le code tu vera bien :
'Déclaration du tableau
Dim Application() As String
Dim i As Integer
Dim j As Integer 'Nbre éléments du tableau
Dim Cel As Range
'On affecte la cellule "A1" à la variable Cel
Set Cel = Range("A1")
'Boucle pour remplir le tableau
For i = 1 To 250
If Not (Cel.Offset(i, 2) = "Aides à la télétransmission" Or Cel.Offset(i, 2) = "BDO famille" Or Cel.Offset(i, 2) = "WEBMATIQUE" Or Cel.Offset(i, 2) = "SYNERGIE" Or Cel.Offset(i, 2) = "SGCAM" Or Cel.Offset(i, 2) = "RNIAM" Or Cel.Offset(i, 2) = "Qualiflux Recyclage" Or Cel.Offset(i, 2) = "Qualiflux Fonctionnel" Or Cel.Offset(i, 2) = "PROGRES POSTE" Or Cel.Offset(i, 2) = "PROGRES courrier" Or Cel.Offset(i, 2) = "PPN PROGRES PRESTATIONS NATURE" Or Cel.Offset(i, 2) = "PAIEMENT MANDATEMENT" Or Cel.Offset(i, 2) = "ORPHEE" Or Cel.Offset(i, 2) = "NOEMIE" Or Cel.Offset(i, 2) = "MUTUELLES" Or Cel.Offset(i, 2) = "MEDIALOG 2" Or Cel.Offset(i, 2) = "Médecin Traitant" Or Cel.Offset(i, 2) = "HOSPICUMU" Or Cel.Offset(i, 2) = "Guide maternité" Or Cel.Offset(i, 2) = "Guichet Automatique" Or Cel.Offset(i, 2) = "Gestion du Fichier des Mutualistes" Or Cel.Offset(i, 2) = "FNPS" Or Cel.Offset(i, 2) = "EURYDICE" Or Cel.Offset(i, 2) = "ESOPE : Impression" _
Or Cel.Offset(i, 2) = "Echanges Tiers" Or Cel.Offset(i, 2) = "ESOPE : Impression " Or Cel.Offset(i, 2) = "Echanges Tiers" Or Cel.Offset(i, 2) = "DSIJ Station locale" Or Cel.Offset(i, 2) = "ADAE: Gestion des déménagements" Or Cel.Offset(i, 2) = "Annuaire FEUVERT" Or Cel.Offset(i, 2) = "Application télématique BDO" Or Cel.Offset(i, 2) = "Archives Consultables consultations" Or Cel.Offset(i, 2) = "Attestations de droits" Or Cel.Offset(i, 2) = "BDS (base de données de services)" Or Cel.Offset(i, 2) = "Bornes Sesam Vitale" Or Cel.Offset(i, 2) = "CHISTO" Or Cel.Offset(i, 2) = "CMU Base ressources" Or Cel.Offset(i, 2) = "Contrôle Nomenclature Actes Product." Or Cel.Offset(i, 2) = "DETTES (gestion centralisée des dettes créances)" Or Cel.Offset(i, 2) = "DSIJ - Site déclaratif Net_DSIJ" Or Cel.Offset(i, 2) = "DSIJ Station Nationale" Or Cel.Offset(i, 2) = "Domiciliations bancaires" Or Cel.Offset(i, 2) = "ESOPE : Intranet éditique" Or Cel.Offset(i, 2) = "ESOPE : Organisme emetteur" _
Or Cel.Offset(i, 2) = "ESOPE : accès aux documents transmis" Or Cel.Offset(i, 2) = "Elections INSEE" Or Cel.Offset(i, 2) = "Epuration BDO" Or Cel.Offset(i, 2) = "FA FAC-BDO" Or Cel.Offset(i, 2) = "FA Traitement Mensuel" Or Cel.Offset(i, 2) = "FIAB" Or Cel.Offset(i, 2) = "Flux UNEDIC et CNAF" Or Cel.Offset(i, 2) = "Frontaliers migrants" Or Cel.Offset(i, 2) = "GESPAN" Or Cel.Offset(i, 2) = "GEST. DE LA PRODUCTION ET DU CONTROLE" Or Cel.Offset(i, 2) = "GESTION DU FICHIER GHS" Or Cel.Offset(i, 2) = "Gestion des compteurs" Or Cel.Offset(i, 2) = "" Or Cel.Offset(i, 2) = "Gestions des périodes assimilées" Or Cel.Offset(i, 2) = "IMAGE" Or Cel.Offset(i, 2) = "IMAGE : Chaîne de chargement des BD" Or Cel.Offset(i, 2) = "IMAGE : consultation des DECOMPTES et FSE" Or Cel.Offset(i, 2) = "IMAGE : outils de service" Or Cel.Offset(i, 2) = "IMAGE Oracle" Or Cel.Offset(i, 2) = "INTERFACE DE CONSULTATION DE ACF" Or Cel.Offset(i, 2) = "Interface V1 LASER IVL" _
Or Cel.Offset(i, 2) = "Interrogation sélectivité" Or Cel.Offset(i, 2) = "LIAISON LASER ENTREE" Or Cel.Offset(i, 2) = "Liaison CAF / CPAM" Or Cel.Offset(i, 2) = "Lycéens" Or Cel.Offset(i, 2) = "Module Ctrl et Normalisation adresse postale" Or Cel.Offset(i, 2) = "Médecin traitant (complément Mainframe)" Or Cel.Offset(i, 2) = "NOEMIE SCANNER" Or Cel.Offset(i, 2) = "Nomenclature Actes Pharmacies BDO" Or Cel.Offset(i, 2) = "Nomenclature TIPS" Or Cel.Offset(i, 2) = "Nomenclature actes CCAM" Or Cel.Offset(i, 2) = "Nomenclature des Actes Biologiques BDO" Or Cel.Offset(i, 2) = "Normalisation des adresses - cadre applicatif TUXEDO" Or Cel.Offset(i, 2) = "Normalisation des adresses - services SFR" Or Cel.Offset(i, 2) = "OUTIL CAISSE" Or Cel.Offset(i, 2) = "Option conventionnelle" Or Cel.Offset(i, 2) = "Ouverture Droits Famille OD DAS" Or Cel.Offset(i, 2) = "PER" Or Cel.Offset(i, 2) = "PER-Archivage" Or Cel.Offset(i, 2) = "PEU" Or Cel.Offset(i, 2) = "PPNA SERVEUR" Or Cel.Offset(i, 2) = "PPNA1" _
Or Cel.Offset(i, 2) = "Prévention dépistage" Or Cel.Offset(i, 2) = "PROCEDURE B" Or Cel.Offset(i, 2) = "PROGRES CENTRAL" Or Cel.Offset(i, 2) = "PROGRES CENTRALE Batch" Or Cel.Offset(i, 2) = "PROGRES SERVEUR" Or Cel.Offset(i, 2) = "Participation Forfaitaire application WEB" Or Cel.Offset(i, 2) = "Participation Forfaitaire module SFR / I AD" Or Cel.Offset(i, 2) = "Participation Forfaitaire module batch" Or Cel.Offset(i, 2) = "Participation Forfaitaire" Or Cel.Offset(i, 2) = "Prévention bucco-dentaire" Or Cel.Offset(i, 2) = "QUID" Or Cel.Offset(i, 2) = "Qualiflux transitoire" Or Cel.Offset(i, 2) = "Qualiflux Saisie manuelle" Or Cel.Offset(i, 2) = "Qualiflux Contrôle" Or Cel.Offset(i, 2) = "Qualité PN" Or Cel.Offset(i, 2) = "REFERENCIEL INDIVIDU NATIONALE" Or Cel.Offset(i, 2) = "RELEVE ANNUEL REMBOURSEMENT ASSURES ERASME" Or Cel.Offset(i, 2) = "RNIAM Centrale" Or Cel.Offset(i, 2) = "Reroutage des Flux Externes" Or Cel.Offset(i, 2) = "SGA-SDP" Or Cel.Offset(i, 2) = "SGCAM" _
Or Cel.Offset(i, 2) = "SP" Or Cel.Offset(i, 2) = "SYNERGIE MEDECIN TRAITANT" Or Cel.Offset(i, 2) = "Statistiques BDO - FAC" Or Cel.Offset(i, 2) = "T2A" Or Cel.Offset(i, 2) = "TABLES PROGRES" Or Cel.Offset(i, 2) = "TARMUT" Or Cel.Offset(i, 2) = "TRACABILITE CARTE EUROPEENNE ASSURE SOCIAL" Or Cel.Offset(i, 2) = "Tarifs Nationaux" Or Cel.Offset(i, 2) = "Vaccination anti-grippe" Or Cel.Offset(i, 2) = "WEBMEDECIN" Or Cel.Offset(i, 2) = "WEBVISU" Or Cel.Offset(i, 2) = "XF" Or Cel.Offset(i, 2) = "ESOPE : Retour Centre") Then
j = j + 1
'Redimension du tableau en conservant ses éléments
ReDim Preserve Application(j)
Application(j) = Cel.Offset(i)
Rows(1).Offset(i).Clear
End If
Next i
Je crois que ce qu'il veux que tu fasse c'est à peu près ca:
dim tab_condition(250) as string
tab_condition(0)="Aides à la télétransmission"
tab_condition(1)="BDO famille" //etc... c'est ca le plus long
for i=1 to 250
for j=0 to 249
if not cel.offset(i,2)=tab_condition(j) then
rows(1).offset(i).Clear
end if
next j
next i
souso_95 a dit :
Je crois que ce qu'il veux que tu fasse c'est à peu près ca:
dim tab_condition(250) as string
tab_condition(0)="Aides à la télétransmission"
tab_condition(1)="BDO famille" //etc... c'est ca le plus long
for i=1 to 250
for j=0 to 249
if not cel.offset(i,2)=tab_condition(j) then
rows(1).offset(i).Clear
end if
next j
next i
merci sa a l'air plus lisible comme sa mais il me met une erreur quand je compile :
Sub ouFunction non définis
???????????????
slt pour la suite de ma macro en fait je vai avoir besoin d'utiliser la forme proposé
le pb c'est que sa marche pas comme je voudrai :
logiquement il devrai me supprimer tout les toto et tata mais en fait il supprime absolument tout (sauf la 1 ere ligne normal) . et si je met ce code :
avec if et pas if not il supprime tout sauf les toto et tata ce qui est normal alors pourquoi sa marche dans un sens et pas dans l'autre ?j'ai bien essayer de mettre un different :
mais sa efface tout aussi alors la je compren plus .
quelqu'unpourrai t-il m'aider ? merci
le pb c'est que sa marche pas comme je voudrai :
Sub MacroSup()
'
' MacroSup Macro
' Macro enregistrée le 14/06/2006 par Administrateur
'
' Touche de raccourci du clavier: Ctrl+p
'
Dim condition(250) As String
Dim j As Variant
Dim i As Variant 'Nbre éléments du tableau
Dim Cel As Range
'Dim NbreCase As Integer
'On affecte la cellule "A1" à la variable Cel
Set Cel = Range("A1")
'NbreCase = Cel.End(xlDown).Row
condition(0) = "toto"
condition(1) = "tata"
For i = 15 To 1 Step -1
For j = 15 To 0 Step -1
If Not (Cel.Offset(i, 2) = condition(j)) Then
Rows(1).Offset(i).Clear
End If
Next
Next
End Sub
logiquement il devrai me supprimer tout les toto et tata mais en fait il supprime absolument tout (sauf la 1 ere ligne normal) . et si je met ce code :
Sub MacroSup()
'
' MacroSup Macro
' Macro enregistrée le 14/06/2006 par Administrateur
'
' Touche de raccourci du clavier: Ctrl+p
'
Dim condition(250) As String
Dim j As Variant
Dim i As Variant 'Nbre éléments du tableau
Dim Cel As Range
'Dim NbreCase As Integer
'On affecte la cellule "A1" à la variable Cel
Set Cel = Range("A1")
'NbreCase = Cel.End(xlDown).Row
condition(0) = "toto"
condition(1) = "tata"
For i = 15 To 1 Step -1
For j = 15 To 0 Step -1
If (Cel.Offset(i, 2) = condition(j)) Then
Rows(1).Offset(i).Clear
End If
Next
Next
End Sub
avec if et pas if not il supprime tout sauf les toto et tata ce qui est normal alors pourquoi sa marche dans un sens et pas dans l'autre ?j'ai bien essayer de mettre un different :
If (Cel.Offset(i, 2) <> condition(j)) Then
mais sa efface tout aussi alors la je compren plus .
quelqu'unpourrai t-il m'aider ? merci
louloukg a dit :
condition(0) = "toto"
condition(1) = "tata"
For i = 15 To 1 Step -1
For j = 15 To 0 Step -1
If (Cel.Offset(i, 2) = condition(j)) Then
Rows(1).Offset(i).Clear
End If
Next
Next
avec if et pas if not il supprime tout sauf les toto et tata ce qui est normal alors pourquoi sa marche dans un sens et pas dans l'autre ?
Bah dans ce cas tu joue le gars malin (du moins t'essayes
), et tu écris:
condition(0) = "toto"
condition(1) = "tata"
For i = 15 To 1 Step -1
For j = 15 To 0 Step -1
If (Cel.Offset(i, 2) = condition(j)) Then
else
Rows(1).Offset(i).Clear
End If
Next
Next
souso_95 a dit :
Bah dans ce cas tu joue le gars malin (du moins t'essayes
), et tu écris:
condition(0) = "toto"
condition(1) = "tata"
For i = 15 To 1 Step -1
For j = 15 To 0 Step -1
If (Cel.Offset(i, 2) = condition(j)) Then
else
Rows(1).Offset(i).Clear
End If
Next
Next
j'avais déja essayer(else ,<> , if not )rien marche. c'est fou j'ai l'impression que ce programme veut me faire ch........
c'est pas logique tout ca y en a bien un qui a une solution ?
quand il passe dans la boucle il passe bien dans le if alor qu'il devrai pas
c'est pas normal .donc tout marche normalement sauf quand il arrive au moment ou : (Cel.Offset(i, 2) = condition(j)) et a ce moment la il ne devrait pas rentre dans le if mais il fait le contraire.j'ai tester condition(j) a ce moment la avec un msgbox et c'est bon c'est egale a ce que je veu donc il y a un pb surnaturel ou alor je suis plus nul en vba que se que je pensai
c'est pas normal .donc tout marche normalement sauf quand il arrive au moment ou : (Cel.Offset(i, 2) = condition(j)) et a ce moment la il ne devrait pas rentre dans le if mais il fait le contraire.j'ai tester condition(j) a ce moment la avec un msgbox et c'est bon c'est egale a ce que je veu donc il y a un pb surnaturel ou alor je suis plus nul en vba que se que je pensai
je croi que j'ai compri en fait voila un bou de code et mon tableau
ref | libele | appli |description | solution
--------------------------------------------
1 | tdgd | toto | fgdg |fgggf
--------------------------------------------
2 | dgdgd | tata | gsg |sfsfs
--------------------------------------------
3 | sfsdfs | titi | sdfs | gfgf
--------------------------------------------
alor en fait pour i = 3 & j = 1 -> condition (j) = tata et Cel.Offset(i, 2) <> condition(j) est confirmé -> supprimer
pour i = 2 & j = 1 -> condition (j) = tata et Cel.Offset(i, 2) <> condition(j) est pas confirmé -> pas supprimer
pour i = 2 & j = 0 ->condition (j) = toto et Cel.Offset(i, 2) <> condition(j) est confirmé ->supprimer
donc dans tout les cas toute les lignes serons suppprimer c'est logique finalement . est ce que vous etes daccord ou je suis a coté de la plaque ?
ref | libele | appli |description | solution
--------------------------------------------
1 | tdgd | toto | fgdg |fgggf
--------------------------------------------
2 | dgdgd | tata | gsg |sfsfs
--------------------------------------------
3 | sfsdfs | titi | sdfs | gfgf
--------------------------------------------
condition(0) = "toto"
condition(1) = "tata"
For i = 3 To 1 Step -1
For j = 1 To 0 Step -1
MsgBox (condition(j))
If (Cel.Offset(i, 2) <> condition(j)) Then
Rows(1).Offset(i).Clear
End If
Next
Next
alor en fait pour i = 3 & j = 1 -> condition (j) = tata et Cel.Offset(i, 2) <> condition(j) est confirmé -> supprimer
pour i = 2 & j = 1 -> condition (j) = tata et Cel.Offset(i, 2) <> condition(j) est pas confirmé -> pas supprimer
pour i = 2 & j = 0 ->condition (j) = toto et Cel.Offset(i, 2) <> condition(j) est confirmé ->supprimer
donc dans tout les cas toute les lignes serons suppprimer c'est logique finalement . est ce que vous etes daccord ou je suis a coté de la plaque ?
haaaaaaaaaaaaaa OK!!
tiens, essaye ca. je sais pas si ca existe les exit for, mais c'est dans l'idée du truc. au pire t'as juste 2-3 ligne de ton prog à modifier pour passer ca en if si jamais exit for existe pas.
comme ca, si une seule de tes condition est bonne, ca supprime pas la ligne normalement
edit: ah non en fait, si ton premier test correspond, ca fonctionne pas.
réedit: après 2 min de réflexion, essaye ca:
init de test à 0
tiens, essaye ca. je sais pas si ca existe les exit for, mais c'est dans l'idée du truc. au pire t'as juste 2-3 ligne de ton prog à modifier pour passer ca en if si jamais exit for existe pas.
condition(0) = "toto"
condition(1) = "tata"
For i = 3 To 1 Step -1
For j = 1 To 0 Step -1
MsgBox (condition(j))
If (Cel.Offset(i, 2) <> condition(j)) Then
Rows(1).Offset(i).Clear
else
exit for
End If
Next
Next
comme ca, si une seule de tes condition est bonne, ca supprime pas la ligne normalement
edit: ah non en fait, si ton premier test correspond, ca fonctionne pas.
réedit: après 2 min de réflexion, essaye ca:
condition(0) = "toto"
condition(1) = "tata"
For i = 3 To 1 Step -1
For j = 1 To 0 Step -1
MsgBox (condition(j))
If (Cel.Offset(i, 2) <> condition(j)) Then
test=test+1
else
exit for
End If
Next
if test = // à ton nombre max de tests
Rows(1).Offset(i).Clear
Next
init de test à 0
Dim test As Integer
condition(0) = "toto"
condition(1) = "tata"
For i = 3 To 1 Step -1
For j = 1 To 0 Step -1
'MsgBox (condition(j))
If (Cel.Offset(i, 2) <> condition(j)) Then
test = test + 1
Else
Exit For
End If
Next
If test = 13 Then 'à ton nombre max de tests
Rows(1).Offset(i).Clear
End If
Next
compren pas trop comment ca marche et en plus ca supprime aucune ligne.
pour le exit for ca marche par contre
alors essaye d'initier test à 1, vas-y à tatons, la c'est plus très loin, tu devrait y arriver tout seul.
comment ca marche:
tu veux supprimer la ligne seulement si elle ne correspond à aucun des tests
-si ta cellule est différente de condition(j) alors test=test+1
-ainsi de suite jusqu'à ce que t'arrives au bout de ton for
-si test est égal à ton nombre de tests, c-a-d que ta cellule ne correspond à aucune des condition : elle est supprimée.
comment ca marche:
tu veux supprimer la ligne seulement si elle ne correspond à aucun des tests
-si ta cellule est différente de condition(j) alors test=test+1
-ainsi de suite jusqu'à ce que t'arrives au bout de ton for
-si test est égal à ton nombre de tests, c-a-d que ta cellule ne correspond à aucune des condition : elle est supprimée.
non, là ta ligne est effacée seulement si elle n'est en accord avec aucune des condition avec lesquelles tu la compare.
Mais si elle est effacée seulement si aucune condition ne correspond, ca veut dire qu'a chaque fois la variable "test" à été incrémentée. donc que "test" est à son maximum.
C'est vrai qu'en gros ca dépend 'du numéro' de test, mais c'est quand même un 'numéro' précis, que tu choisis pas comme ca.
Mais si elle est effacée seulement si aucune condition ne correspond, ca veut dire qu'a chaque fois la variable "test" à été incrémentée. donc que "test" est à son maximum.
C'est vrai qu'en gros ca dépend 'du numéro' de test, mais c'est quand même un 'numéro' précis, que tu choisis pas comme ca.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
zeb
C'est dans le nombre de voies de *malinité* proposées que l'on reconnait les grands s(a / in)ges.