Open Office probleme avec macro svp

Bonjour j'ai également poster ce message dans "programmation" car je ne sais pas trop dans quel coin caser ce sujet...

j'ai de légère base en VBA sous Excel mais maintenant on a Open Office et je dois dans un tableau, copier la valeur écrite dans la colonne B de la feuille 1 et la coller dans la colonne C de la feuille 2 mais à condition que le nom écrit dans la colonne C de la feuille 1 soit identique au nom dans la colonne B de la feuille 2
J ai commencé à écrire ce code avec l'aide d'informations trouvés sur internet :

Sub test1230123

Dim monDocument As Object
Dim mesFeuilles As Object 'Désigne les feuilles
Dim feuilleSource As Object 'Désigne la feuille source
Dim feuilleDestination As Object 'Désigne la feuille destination

Dim i As Integer

monDocument = thisComponent 'il s'agit du document actif sur lequel on travaille
mesFeuilles = monDocument.Sheets 'mesFeuilles est la Feuille1 du document actif

feuilleSource = mesFeuilles.getByName("Feuille1")'Feuille source qui contient les données à copier
feuilleDestination = mesFeuilles.getByName("Feuille2") 'Désignation de la feuille de destination si on veut la désigner

for i = 1 to 1000
if Sheet(Feuille1).getCellByPosition("A").Value = heet(Feuille2).getCellByPosition("B").Value then
Sheet(Feuille1).getCellByPosition("B").Value = Sheet(Feuille2).getCellByPosition("C").Value

End if
next i
End Sub

Mais à la ligne souligné un message d'erreur affiche : "sous procédure ou procédure de fonction non définies"
Pouvez vous m'aider svp c'est très important
merci

11 réponses

  1. peux tu redire à quelle ligne tu as l'erreur?
    0
    1. Pardon j 'ai oublié de surligné c'est la ligne après le for :

      if Sheet(Feuille1).getCellByPosition("A").Value = heet(Feuille2).getCellByPosition("B").Value then
      0
      1. il y a bien un S dans la macro au sheet de la deuxieme ligne juste un petit loupé...
        0
        1. En effet juste une faute de frappe!
          quand tu as une erreur de ce style, ça veut dire que le compilateur ne reconnait pas le nom de la méthode, et donc soit elle n'existe pas, soit il y a une faute de frappe (comme ça a l'air d'être le cas ici)
          0
      2. Mais sinon dans le langage "général" la macro ressemble bien à ça?
        et si c'est un problème de méthode laquelle utiliser?
        0
        1. Oui je pense. Personnellement je travaille avec Excel, mais si les noms des méthodes sont calquées sur Excel, peut être essaie de remplacer tous tes "Sheet" par des "Sheets"
          0
      3. Je viens d'essayer mais cela ne fonctionne pas de longues recherches s'annoncent mais merci d'avoir essayé
        0
        1. une autre question, a quel moment utilises tu ta variable i ?
          0
      4. j ai mis i au moment du if pour que celui ci se fasse ligne par ligne donc que la macro regarde la concordance des noms sur une ligne puis elle recommence sur celle d'après. Mais cette idée de i viens de moi donc j'en suis pas sûr à 100% mais on faisait des trucs comme sa quand on utilisait if en cours
        0
        1. Ok j'ai relu plus en détail ton code.
          Remplace Sheet par feuilleSource et feuilleDestination suivant le contexte adapté, ici Sheet est lu comme une variable qui n'a jamais été définie avant...
          0
      5. j ai changé :

        if feuilleSource.Range("A").Value = feuilleDestination.Range("B").Value then
        feuilleSource.Range("B").Value = feuilleDestination.Range("C").Value

        mais maintenant il met met comme erreur "propriété ou méthode non trouvée : range". Peu être qu'open office ne connait pas Range comme Excel?
        0
        1. c'est tout à fait ça. du coup réessaie la méthode getCellByPosition (num_colonne,num_ligne )
          (pour num_ligne tu remplaces par la variable i, pour num_colonne j'imagine qu'on doit avoir A->0, B->1...)
          0
      6. Sa avance plus d'erreurs s'affichent mais maintenant dans la feuille 1 colonne B (là où il y a les données à copier) j ai des zero dans toute la colonne ?!
        0
        1. ouais je viens de voir, apparement pour écrire dans une cellule il ne faut pas utiliser l'opérateur "=" mais la méthode setString. Jette un coup d'oeil à cette adresse, ça devrait t'aider.

          http://christianwtd.free.fr/index.php?rubrique=BasExemplesFonction01
          0
      7. j ai permuter
        feuilleSource.Range("B").Value = feuilleDestination.Range("C").Value
        en
        feuilleDestination.getCellByPosition(2, i).Value = feuilleSource.getCellByPosition(1, i).Value

        et les valeurs des trois premiers noms s'affichent bien mais cela fais juste un copier/coller classique la macro ne prend pas compte des noms différent et puis les noms ne sont pas situés sur les même lignes et les valeurs s'affichent sur les trois premieres... sa doit etre compliqué à comprendre sans le fichier
        0
        1. 
          Sub test1230123
          
          Dim monDocument As Object
          Dim mesFeuilles As Object 'Désigne les feuilles
          Dim feuilleSource As Object 'Désigne la feuille source
          Dim feuilleDestination As Object 'Désigne la feuille destination
          Dim i As Integer
          Dim Noms As Variant
          monDocument = thisComponent 'il s'agit du document actif sur lequel on travaille
          mesFeuilles = monDocument.Sheets 'mesFeuilles est la Feuille1 du document actif
          
          feuilleSource = mesFeuilles.getByName("Feuille1")'Feuille source qui contient les données à copier
          feuilleDestination = mesFeuilles.getByName("Feuille2") 'Désignation de la feuille de destination si on veut la désigner
          
          Noms(1)=("0, i")
          Noms(2)=("1, i")
          
          for i = 1 to 700
          feuilleDestination.setString(Noms (i)) = feuilleSource.setString(Noms (i))
          
          
          if Nom(i) <> "" then
          feuilleDestination.getCellByPosition(2, i).setValue(feuilleSource(1, i))
          
          
          end if
          next i
          End Sub 
          


          par rapport au site que tu m as transmis j'ai rectifié un peu la fin du code mais maintenant comme message d'erreur " attendu : Then" à la ligne souligné alors qu'il y a le then je ne comprends pas trop
          0
          1. Youpy j'ai demandé ailleurs pour voir différentes idées proposé et on ma donné un code plus compliqué dont il faut que je comprenne chaque ligne sinon le code ne sers pas à grand chose.. mais il fonctionne très bien. Je te remercie d'avoir pris du temps sur la macro problématique
            0