[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 !
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 19:46

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

Message par ZEK4 »

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

 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 modification par ZEK4 le 11 avr. 2021 21:36, modifié 1 fois.
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

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

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
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 19:46

Re: [Calc] For Next et IF OR THEN

Message par ZEK4 »

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)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

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

À tester... (non vérifié)

Code : Tout sélectionner

'---------------------------------------------------------------------------------------------------
'__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 
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 19:46

Re: [Calc] For Next et IF OR THEN

Message par ZEK4 »

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

For j = 2 to 6 
    oCellRemplie1 = oFeuille.getCellByPosition(i,10
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

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

Essayez plutôt ce code...

Code : Tout sélectionner

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é 
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 19:46

Re: [Calc] For Next et IF OR THEN

Message par ZEK4 »

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)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

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.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

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

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.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 944
Inscription : 19 août 2018 07:20

Re: [Calc] For Next et IF OR THEN

Message par Dolev »

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

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.15 sous Windows 11
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

Bonjour,
En effet, Dolev, c'est carrement mieux!
Merci pour cette astuce. (Je me la garde bien au chaud...)
Markotxe
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 19:46

Re: [Calc] For Next et IF OR THEN

Message par ZEK4 »

bonjour Dolev

pourquoi il n'y a pas de End If ?
merci
libre office calc ver 7.1.1.2 WIN 7(X64)
markotxe
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 09 févr. 2018 10:55

Re: [Calc] For Next et IF OR THEN

Message par markotxe »

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.
LibO 7.5.2 et Open Office 4.1.14
Window11
(Obligation de version).
ZEK4
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 29 mars 2021 19:46

Re: [Calc] For Next et IF OR THEN

Message par ZEK4 »

Bonjour marktoxe,
ok merci...
libre office calc ver 7.1.1.2 WIN 7(X64)
Verrouillé