Code excel mediocre help plz

Résolu
redemption87 Messages postés 5 Statut Membre -  
redemption87 Messages postés 5 Statut Membre -
Bonjour,

Voila je ne me connais pas en excel mais j'ai essayé de lire un peu de cours sur net et j'ai fini par écrire ce code qui devrait me permettre de copier le contenu d'un ensemble de cellules d'une feuille excel et le coller tout au long d'une ligne dans une autre feuille.
reste, quand je clique sur le bouton 'done' le logiciel m'affiche une fenêtre d'erreur. est ce que vous pouvez m'aidez ?

Sub done_click()

Dim vardate As Date
Dim nom, prenom, atb1, lettre, antibiogramme, service As String
Dim compteur, duree, matricule As Integer

Sheets("datafilling").Select
matricule = Cells(D9)
nom = Cells(D5)
prenom = Cells(D7)
service = Cells(D11)
lettre = Cells(H4)
antibiogramme = Cells(J4)
atb1 = Cells(B14)
vardate = Cells(D3)
duree = Cells(H14)

Sheets("Home").Select

Call je_cherche_la_premiere_cellule_vide_et_je_colle
End Sub
Sub je_cherche_la_premiere_cellule_vide_et_je_colle()

Dim noligne As Integer

noligne = 14

While Cells(noligne, a) <> ""
noligne = noligne + 1
Wend

Cells(noligne, c) = nom
Cells(noligne, d) = prenom
Cells(nolign, b) = matricule
Cells(noligne, e) = service
Cells(noligne, f) = lettre
Cells(noligne, g) = antibiogramme
Cells(noligne, h) = atb1
Cells(noligne, A) = vardate
Cells(noligne, i) = duree
End Sub
End Sub

2 réponses

  1. artg78 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   14
     
    Déjà, pour nommer une cellule, c'est cells(numéro ligne, numéro colonne).
    0
    1. redemption87 Messages postés 5 Statut Membre
       
      ok merci.
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    1. en tête du module tu places l'instruction qui va t'obliger à déclarer les variables
    Option Explicit
    2. Les adresses de cellules doivent être mises entre guillemets
    matricule = Cells(D9) doit s'écrire matricule = Range("D9") ou Cells(9,"D")
    3. les variables utilisées dans la 2° procedure sont "celles de la 1°" mais comme elles ne sont déclarées que dans la 1° elles ne sont pas visibles dans la 2°
    donc déclarer ces variables dans l'en tête du module, après Option explicit

    en gros ton programme devrait ressembler à ça.

    Option Explicit     
    
    Dim vardate As Date     
    Dim nom, prenom, atb1, lettre, antibiogramme, service As String     
    Dim compteur, duree, matricule As Integer     
    
    Sub done_click()     
    matricule = Range("D9")     
    nom = Range("D5")     
    etc ...     
    End Sub     
    
    Sub je_cherche_la_premiere_cellule_vide_et_je_colle()     
    Dim noligne As Integer     
    noligne = 14     
    With Sheets("Home")     
      While .Cells(noligne, "A") <> ""     
        noligne = noligne + 1     
      Wend     
      .Cells(noligne, "C") = nom     
      etc ...     
    End With     
    End Sub

    bon courage
    0
    1. redemption87 Messages postés 5 Statut Membre
       
      merci c'est gentil :) je vais réessayer .
      0
    2. redemption87 Messages postés 5 Statut Membre
       
      merci mille merci ca a marché :)

      Option Explicit

      Dim daate, premierj, arret1, arret2, tajdid As Integer
      Dim poso As String
      Dim nom, prenom, atb, lettre, antibiogramme, service As String
      Dim compteur, duree, matricule, qtetot1, qtetot2 As Integer


      Sub done_click()

      Sheets("datafilling").Select
      matricule = Range("D9")
      nom = Range("D5")
      prenom = Range("D7")
      service = Range("D11")
      lettre = Range("H4")
      antibiogramme = Range("J4")
      atb = Range("B14")
      'jai coupe
      premierj = Range("F14")
      daate = Range("D3")
      duree = Range("H14")
      arret1 = Range("J14")
      qtetot1 = Range("H17")
      qtetot2 = Range("L17")
      poso = Range("D14")
      arret2 = Range("L14")

      tajdid = Range("D18")

      Sheets("Home").Select

      Call je_cherche_la_premiere_cellule_vide_et_je_colle

      End Sub

      Sub je_cherche_la_premiere_cellule_vide_et_je_colle()
      Dim noligne As Integer
      noligne = 14
      With Sheets("Home")
      While .Cells(noligne, "A") <> ""
      noligne = noligne + 1
      Wend
      Cells(noligne, "A") = daate
      Cells(noligne, "B") = matricule
      Cells(noligne, "C") = nom
      Cells(noligne, "D") = prenom
      Cells(noligne, "E") = service
      Cells(noligne, "f") = lettre
      Cells(noligne, "G") = antibiogramme
      Cells(noligne, "H") = atb
      'jai couper 2

      Cells(noligne, "J") = premierj
      Cells(noligne, "K") = duree
      Cells(noligne, "M") = arret1
      Cells(noligne, "L") = qtetot1
      Cells(noligne, "P") = qtetot2
      Cells(noligne, "I") = poso
      Cells(noligne, "O") = arret2
      Cells(noligne, "N") = tajdid


      Cells(noligne, "A").Select

      End With
      End Sub
      Sub clear2()
      '
      ' clear2 Macro
      '

      '
      Range("D3,D5,D7,D9,D11,B14,D14,F14,H14,H17,H4,J4,L14,L17,N14").Select
      Range("N14").Activate
      Selection.ClearContents
      End Sub
      0