Règles du forum 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 !
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")
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.
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...)
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).
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 ..
'---------------------------------------------------------------------------------------------------
'__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).
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).
il me semble que ça marche, tu me confirme ?.Merci
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
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).
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.
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).
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
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).