OOoBasic, macro sous openoffice linux
Fermé
Shogolat
-
28 juil. 2005 à 11:51
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 juil. 2005 à 19:03
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 juil. 2005 à 19:03
A voir également:
- OOoBasic, macro sous openoffice linux
- Telecharger openoffice - Télécharger - Suite bureautique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Diskinternals linux reader - Télécharger - Stockage
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
3 réponses
Enfaite ta solution fonctionne mais pas comment j'ai besoin, car toi ca fonctionne si le mot à la ligne 10 de la f1 = le mot à la ligne 10 de la f2 et ca ne fonctionne pas si le mot ligne 10 f1 <> du mot l10 f2 mais = au mot l52 f2
j'ai fait ca, ca fonctionne, c'est un peu long car si le mot n'existe pas sur la feuille 2 il la parcourt en entier pour chercher si le mot est là ou non, ca ralentit mais utile si les mots ne sont pas à la même ligne, pour trouver il ne me manqué que le code pour prendre la valeur d'une cell:
Sub trouve()
Dim classeur as Object
Dim lesfeuilles as Object
Dim feuille as Object
Dim cell as Object
Dim feuille1 as Object
classeur = thisComponent
lesfeuilles = classeur.Sheets
feuille = lesfeuilles.getByName("Feuille2")
feuille1 = lesfeuilles.getByName("Feuille1")
Dim x as Long
Dim y as Long
Dim xx as Long
xx = 1 'ligne
y = 0 'colonne
x = 1
while feuille.getCellByPosition(y,xx).string <> ""
if feuille.getCellByPosition(y,xx).string = feuille1.getCellByPosition(y,x).string then
feuille1.getCellByPosition(y+15,x).string = feuille.getCellByPosition(y+15,xx).string
feuille1.getCellByPosition(y+16,x).string = feuille.getCellByPosition(y+16,xx).string
x = x+1
xx = xx+1
else
while feuille.getCellByPosition(y,xx).string <> feuille1.getCellByPosition(y,x).string and feuille1.getCellByPosition(y,x).string <> ""
x = x+1
wend
if feuille.getCellByPosition(y,xx).string = feuille1.getCellByPosition(y,x).string then
feuille1.getCellByPosition(y+15,x).string = feuille.getCellByPosition(y+15,xx).string
feuille1.getCellByPosition(y+16,x).string = feuille.getCellByPosition(y+16,xx).string
else
xx = xx + 1
x = 0
end if
end if
wend
End sub
j'ai fait ca, ca fonctionne, c'est un peu long car si le mot n'existe pas sur la feuille 2 il la parcourt en entier pour chercher si le mot est là ou non, ca ralentit mais utile si les mots ne sont pas à la même ligne, pour trouver il ne me manqué que le code pour prendre la valeur d'une cell:
Sub trouve()
Dim classeur as Object
Dim lesfeuilles as Object
Dim feuille as Object
Dim cell as Object
Dim feuille1 as Object
classeur = thisComponent
lesfeuilles = classeur.Sheets
feuille = lesfeuilles.getByName("Feuille2")
feuille1 = lesfeuilles.getByName("Feuille1")
Dim x as Long
Dim y as Long
Dim xx as Long
xx = 1 'ligne
y = 0 'colonne
x = 1
while feuille.getCellByPosition(y,xx).string <> ""
if feuille.getCellByPosition(y,xx).string = feuille1.getCellByPosition(y,x).string then
feuille1.getCellByPosition(y+15,x).string = feuille.getCellByPosition(y+15,xx).string
feuille1.getCellByPosition(y+16,x).string = feuille.getCellByPosition(y+16,xx).string
x = x+1
xx = xx+1
else
while feuille.getCellByPosition(y,xx).string <> feuille1.getCellByPosition(y,x).string and feuille1.getCellByPosition(y,x).string <> ""
x = x+1
wend
if feuille.getCellByPosition(y,xx).string = feuille1.getCellByPosition(y,x).string then
feuille1.getCellByPosition(y+15,x).string = feuille.getCellByPosition(y+15,xx).string
feuille1.getCellByPosition(y+16,x).string = feuille.getCellByPosition(y+16,xx).string
else
xx = xx + 1
x = 0
end if
end if
wend
End sub
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 juil. 2005 à 01:18
29 juil. 2005 à 01:18
Salut,
J'ai testé sur les valeurs suivantes et le résultat et 5 puisque A7 = D7 donc E7 = B7
Une feuille openoffice contient 32000 lignes.
L'exemple je l'ai fait que pour les 10 lignes.
Ca m'etonnerait que tu auras besoin de toutes les lignes.
Si tu veut vraiment vérifier toutes les lignes de 0 à 31999 alors tu peut utiliser ce module.
A B C D E 1 45 45 2 454 45 3 8 2 4 754 65 5 2 32 6 12 23 7 5 7 5 8 232 1 9 665 12 10 323 6
J'ai testé sur les valeurs suivantes et le résultat et 5 puisque A7 = D7 donc E7 = B7
Sub comparer() dim classeur as object dim feuilles as object dim feuille as object dim cellule as object dim c1 As Integer,c2 As Integer,c3 As Integer classeur = thisComponent ' le classeur feuilles = classeur.Sheets ' la collection des feuilles feuille = feuilles.getByName("a") 'la feuille je l'ai nommée a dim i as integer for i=1 to 10 c1= feuille.getcellrangebyname("A" & i).value c2= feuille.getcellrangebyname("D" & i).value c3 = feuille.getcellrangebyname("B" & i).value if c1 = c2 then feuille.getcellrangebyname("E" & i).value = c3 end if next i End Sub
Une feuille openoffice contient 32000 lignes.
L'exemple je l'ai fait que pour les 10 lignes.
Ca m'etonnerait que tu auras besoin de toutes les lignes.
Si tu veut vraiment vérifier toutes les lignes de 0 à 31999 alors tu peut utiliser ce module.
Sub comparer() dim classeur as object dim feuilles as object dim feuille as object dim cellule as object dim c1 As Integer,c2 As Integer,c3 As Integer classeur = thisComponent ' le classeur feuilles = classeur.Sheets ' la collection des feuilles feuille = feuilles.getByName("a") 'la feuille je l'ai nommée a dim i as integer dim nblignes as integer nblignes = feuille.rows.count 'on stocke dans une variable le nombre de lignes ' on peut aussi utiliser une constante sachant que le nombre de lignes et 32000 for i=1 to nblignes 'on vérifie toutes les lignes (il faut adapter au contenu de ta feuille) ' on utilise les variables c1,c2,c3 pour stocker ' le contenu des cellules à chaque passage dans la boucle c1= feuille.getcellrangebyname("A" & i).value c2= feuille.getcellrangebyname("D" & i).value c3 = feuille.getcellrangebyname("B" & i).value if c1 = c2 then feuille.getcellrangebyname("E" & i).value = c3 end if next i End Sub
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 juil. 2005 à 19:03
29 juil. 2005 à 19:03
Salut,
Enfaite ta solution fonctionne mais pas comment j'ai besoin
Je suis certain que tu as raison. Cependant ce ne pas ça que tu as demandé. Dans ton message je n'ai pas deviné qu'il s'agit de plusieurs feuilles par exemple.
pour trouver il ne me manqué que le code pour prendre la valeur d'une cell:
ou
c'est un peu long car si le mot n'existe pas sur la feuille 2 il la parcourt en entier pour chercher si le mot est là ou non
Pour ça il y a aussi des solutions. Par exemple la methode de recherche dichotomique.
lami20j
Enfaite ta solution fonctionne mais pas comment j'ai besoin
Je suis certain que tu as raison. Cependant ce ne pas ça que tu as demandé. Dans ton message je n'ai pas deviné qu'il s'agit de plusieurs feuilles par exemple.
pour trouver il ne me manqué que le code pour prendre la valeur d'une cell:
Dim strCellule As String ' une variable dans la quelle on stocke le contenu d'une cellule ( le cas string) strCellule = feuille.getCellRangeByName("C2").String ' (ou value en fonction de format de tes données)
ou
strCellule = feuille.getCellByPosition(x,y).String
c'est un peu long car si le mot n'existe pas sur la feuille 2 il la parcourt en entier pour chercher si le mot est là ou non
Pour ça il y a aussi des solutions. Par exemple la methode de recherche dichotomique.
lami20j