|
|
|
|
Bonjour j'aimerai faire une macro sous OpenOffice Calc.
Mais je n'arrive pas à trouver comment écrire dans une cellule à partir d'une macro ou affecter la valeur d'une cellule à une autre cellule.
Et aussi je ne trouve pas l'opérateur =
En basic le = est l'affectation hors je ne trouve pas comment faire pour la comparaison if x = y then.
Enfaite je voudrais un truc simple comme :
if cellule(a1) = cellule (d1) then /// je compare a1 et d1
cellule(e1) = cellule (b1) /// j'affecte la valeur de b1 dans e1
end if
Comment déclarer la variable de la cellule?
et ensuite comment faire pour admettons affecter le numéro de la ligne dans une variable x admettons.
comme ca je pourrais comparé ax avec bx par exemple pour pouvoir comparer toutes les lignes d'une feuille.
Merci d'avance
Configuration: Debian OpenOffice 1.1.3
Salut,
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
|
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
|
Salut,
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 |