[Résolu][Calc] For Next et IF OR THEN

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] For Next et IF OR THEN

Messagepar ZEK4 » 10 Avr 2021 16:51

bonjour,
je souhaite écrire un bout de code qui à la pression du bouton imprime rouge qui vérifie que

les cellules ("C11")...("G11") et ("I11") doivent etre renseignées ( NON VIDE ); seule la cellule ("H11") peut rester vide .Si l'une 'des cellules obligatoires est vide alors une msgBox alert ....
j'essaie de passer par une boucle pour lire le type=empty des cellules ("C11")à("G11") et j'ai mis OR pour vérifier la cellule ("I11")

saisie incomplete.png



voici mon code qui ne marche pas:
Code : Tout sélectionner   AgrandirRéduire
For i = 2 to 6
        ' oCellRemplie = oFeuille.getCellRangeByName("B11:I11")
         oCellRemplie1 = oFeuille.getCellByPosition(i,11)
         oCellRemplie2 = oFeuille.getCellRangeByName("I11")
         
         If oCellRemplie1.type = Empty OR oCellRemplie2.type = Empty Then  'and oCellOccupee.String = ""
           msgBox(" il manque des renseignements importants",48,"SAISIE  INCOMPLETE")
           exit sub
            oCursor = oCellRemplie.getSpreadSheet().createCursorByRange( oCellRemplie )     
            oCursor.gotoOffset(1,0)  'deplace le cirseur une cellule vers la droite meme ligne
            'oCellderniere               = oCursor.getCellByPosition(0,0)
            'oCellderniere.charColor = RGB(255,255,255)
            'ThisComponent.getCurrentController.select(oCellderniere)
            Exit for
         End If
  Next i 


MERCI
Dernière édition par ZEK4 le 11 Avr 2021 20:36, édité 1 fois.
libre office calc ver 7.1.1.2 WIN 7(X64)
ZEK4
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 29 Mars 2021 18:46

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 10 Avr 2021 19:10

Bonjour ZEK4
Hum... Peut-être, pas obligé de passer par une boucle.
Si je comprends bien, il s'agit de vérifier les 3 cellules C11, G11 et I11?
(H11 n'entrant pas dans la condition, on peut l'écarter...)

Une suggestion à la volée (non-vérifiée)
Code : Tout sélectionner   AgrandirRéduire
ocellC11 = oFeuille.getCellRangeByName("C11")
oCellG11 = oFeuille.getCellRangeByName("G11")
oCellI11 = oFeuille.getCellRangeByName("I11")
If ocellC11.type = Empty or oCellG11.type = Empty or oCellI11.type = Empty Then
   msgBox " il manque des renseignements importants",48,"SAISIE  INCOMPLETE"
End if
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar ZEK4 » 10 Avr 2021 19:17

j'ai bien pensé procéder ainsi, mais il faut vérifier C11, D11, E11, F11, G11, et I11, , Pas H11,
mais pour apprendre à faire une boucle avec if integrer dedans, il me semblait possible de verifier de c11 à G11 en incrementant 1 à chaque tour ..
libre office calc ver 7.1.1.2 WIN 7(X64)
ZEK4
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 29 Mars 2021 18:46

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 10 Avr 2021 19:30

D'accord d'accord...,
dans ce cas une boucle effectivement.

À tester... (non vérifié)
Code : Tout sélectionner   AgrandirRéduire
'---------------------------------------------------------------------------------------------------
'__D'abord on traite les cellules de la colonne C (= 2) jusqu'à G(=6)
For j = 2 to 6 
    oCellRemplie1 = oFeuille.getCellByPosition(i,10)
' NOTA:  10 correspond à la ligne 11!!!
'Dans votre boucle vous aviez mis 1 qui correspond à la ligne 2
    If oCellRemplie1.type = Empty Then
       msgBox(" il manque des renseignements importants",48,"SAISIE  INCOMPLETE")
       exit sub
    End If
  Next j
'----------------------------------------------------------------------------------------------------
'__On traite I12 séparèment_______________________________________________
    oCellRemplie2 = oFeuille.getCellRangeByName("I11")
    If oCellRemplie2.Type = Empty Then
       msgBox(" il manque des renseignements importants",48,"SAISIE  INCOMPLETE")
       exit sub
    End If
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar ZEK4 » 10 Avr 2021 19:47

Eh Marktoxe, tu me mets des pieges ??!!LOL

tu boucles sur j et tu déclares i dans la boucle , "enfin j'me comprends" :fou: :mrgreen:
Code : Tout sélectionner   AgrandirRéduire
For j = 2 to 6
    oCellRemplie1 = oFeuille.getCellByPosition(i,10
libre office calc ver 7.1.1.2 WIN 7(X64)
ZEK4
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 29 Mars 2021 18:46

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 10 Avr 2021 19:51

Autant pour moi,
Je viens de faire un test et ça ne marche pas...

Essayez plutôt ce code...
Code : Tout sélectionner   AgrandirRéduire
For j = 2 to 6
    oCellRemplie1 = oFeuille.getCellByPosition(j,10)         
    If oCellRemplie1.Type = Empty Then
       msgBox(" il manque des renseignements importants",48,"SAISIE  INCOMPLETE")
  Exit for
    End If
  Next j
    oCellRemplie2 = oFeuille.getCellRangeByName("I11")
    If oCellRemplie2.Type = Empty Then
       msgBox(" il manque des renseignements importants",48,"SAISIE  INCOMPLETE")
    End If


 Ajout : Correction: Deuxième condition.
If oCellRemplie1.Type = Empty Then par oCellRemplie2...
Désolé 
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar ZEK4 » 10 Avr 2021 19:58

il me semble que ça marche, tu me confirme ?.Merci :bravo:

MAIS, quand je teste depuis l'éditeur de macros avec des points d’arrêt sur la ligne apres "end if" pour éviter la lecture totale de la macros , ça marche pas, et quand j’enlève les point s d’arrêt, ca marche !!

je vais étaler ta macro pour les saisies dans la rubrique déposant.MERCI
libre office calc ver 7.1.1.2 WIN 7(X64)
ZEK4
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 29 Mars 2021 18:46

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 10 Avr 2021 20:05

Oui ça marche chez moi.
Le exit sub cause des pbs apparement...
J'ai tester le bout de code aparte.
Je cherche un truc sur la grande macro et je vous reviens.
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 10 Avr 2021 20:39

Bon, ben...
J'ai testé sur la grande macro "Imprime"...
Finalement le exit sub fonctionne correctement (en tout cas chez moi)
J'espère que c'est le cas aussi chez vous.

Voici le code:
Code : Tout sélectionner   AgrandirRéduire
For j = 2 to 6
    oCellRemplie1 = oMaFeuille1.getCellByPosition(j,10)         
    If oCellRemplie1.Type = Empty Then
       msgBox  "Il manque des renseignements importants, SAISIE  INCOMPLETE en " & oCellRemplie1.AbsoluteName
  Exit Sub
  Exit for
    End If
  Next j
  oCellRemplie2 = oMaFeuille1.getCellRangeByName("I11")
  If oCellRemplie2.Type = Empty Then
     msgBox  "Il manque des renseignements importants, SAISIE  INCOMPLETE en " & oCellRemplie2.AbsoluteName
     Exit sub
  End If 


Nota: J'ai ajouté un ".AbsoluteName" dans le Msgbox de façon à indiquer l'adresse de la cellule vide.
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar Dolev » 11 Avr 2021 13:15

Bonjour,

ZEK4 a écrit:passer par une boucle pour lire le type=empty des cellules ("C11")à("G11")

Pas besoin de boucler :
Code : Tout sélectionner   AgrandirRéduire
Sub Main
   oDoc = ThisComponent()
   oFeuil = oDoc.Sheets.getByName("Feuille1")   
    oPlage = oFeuil.getCellrangeByName("C11:G11")
    oOccup = oPlage.queryEmptyCells()
    if oOccup.getCount > 0 then msgbox "La plage n'est pas toute remplie"   
End Sub
Open Office 4.1.10 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 250
Inscrit le : 19 Août 2018 06:20

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 11 Avr 2021 13:34

Bonjour,
En effet, Dolev, c'est carrement mieux!
Merci pour cette astuce. (Je me la garde bien au chaud...)
Markotxe
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar ZEK4 » 11 Avr 2021 14:47

bonjour Dolev

pourquoi il n'y a pas de End If ?
merci
libre office calc ver 7.1.1.2 WIN 7(X64)
ZEK4
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 29 Mars 2021 18:46

Re: [Calc] For Next et IF OR THEN

Messagepar markotxe » 11 Avr 2021 15:45

Bonjour ZEK4,
Pas la peine de mettre "End if" si le resultat de la condition est situé à la suite du "Then" (sur la même ligne).
Par contre, si on revient à la ligne après le "Then", il faudra écrire End If.
Open Office 4.1.5 Window10 (Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 73
Inscrit le : 09 Fév 2018 10:55

Re: [Calc] For Next et IF OR THEN

Messagepar ZEK4 » 11 Avr 2021 15:49

Bonjour marktoxe,
ok merci...
libre office calc ver 7.1.1.2 WIN 7(X64)
ZEK4
Membre lOOyal
Membre lOOyal
 
Message(s) : 35
Inscrit le : 29 Mars 2021 18:46


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)