Ecrire une chaine dans une cellule donnee

Poor Frog Messages postés 9 Statut Membre -  
Poor Frog Messages postés 9 Statut Membre -
Bonjour a Tous,

J'ai cree une base de donnee compositeur. Pour chaque oeuvre musicale, je souhaiterai que les differents mouvements soient indiques dans une colonne dediee (GM) sur 2 digits. "01" "02" etc.....

J'ai ecris une Private Sub Ref_Mvt_Count(Index As Interger) pour cela mais cela ne marche : je me fais insulter "out of memory"

Private Sub Ref_Mvt_Count(Index As Integer)

Dim dLi As Integer
Dim rPl As Range
Dim stMvt As String

With Sheets("WORKS_DATA")
dLi = .Cells(Application.Rows.Count, 2).End(xlUp).Row
Set rPl = .Range("GM2:GM" & dLi)
End With
If Index >= 10 Then
stMvt = CStr(Index)
Else
stMvt = "0" & CStr(Index)
End If
For Each cel In rPl
cel.Value = stMvt
Next
End Sub

Cette routine est appelee comme suit :

Call Ref_Mvt_Count(iMvt)

iMvt etant l'entier qui contient le numero du mouvement qui commence a "0"

Qu'en pensez vous?

Merci d'avance pour votre aide.

14 réponses

  1. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Commence par vérifier si cette erreur n'est pas liée à la valeur de la variable dLi qui ne doit pas dépasser la valeur maximale pour un entier, à savoir 32767. Tu peux alors déclarer un type de variable Long à la place de Integer.

    De plus, pour obtenir un affichage sur 2 chiffres, tu peux te contenter d'un format nombre personnalisé "00".

    A+
    0
  2. Poor Frog Messages postés 9 Statut Membre
     
    Merci c'est deja beaucoup mieux en ce sens que mon tbx ne saute plus dans tous les sens des que la macro tourne.

    J'ai d'autres erreurs qui du coup sont apparues :

    Pour chaque partition une copie automatique ce fait par rapport au nombre d'instruments dans l'oeuvre et de mouvements. ( 2 instruments + 2 mouvements = 6 lignes)

    * au moment du traitement je vois que toutes les precedentes saisies se recalculent suivant la nouvelle entree (je vois dans GM defiler 0 ou 1 ou 2)

    * si j'ai trois partitions, les nombres de mouvements de la derniere partition entree modifient les precedentes, et dans ma colonne GM je retrouve a chaque ligne 2 (= 3 mouvements)

    Petite info : pack office 2010 et mes debut en vba datent de janvier dernier.
    0
  3. Gyrus Messages postés 3360 Statut Membre 526
     
    Tu dis que c'est beaucoup mieux mais tu ne dis pas pour quelle solution tu as opté (adaptation du type de variable ou format personnalisé).

    Concernant les autres erreurs, je ne vois pas comment nous pourrions t'aider sans un classeur pour exemple. Tel que tu décris le problème, tu dois avoir des formules qui font évoluer les valeurs ou des procédures évènementielles qui effectuent ces rafraîchissements.

    A+
    0
  4. Poor Frog Messages postés 9 Statut Membre
     
    J'ai declare dLi As Long,
    changer Index en As Byte et
    determine un format personnalise

    du coup je vois ces nouveaux grains de sable.

    Le numero des mouvements de s'incremente pas au fur et a mesure des lignes et de plus modifie les precedentes.

    Maintenant avec le code ci-dessous j'ai une erreur de type 1004 pour :

    " If Application.WorksheetFunction.CountA(cel.Offset(-91, -136).Resize(1, 45)) <> 1"

    #Private Sub Ref_Mvt_Count(Index As Byte)

    Dim dLi As Long
    Dim rPl As Range
    Dim stMvt As String

    With Sheets("WORKS_DATA")
    dLi = .Cells(Application.Rows.Count, 2).End(xlUp).Row
    Set rPl = .Range("GM2:GM" & dLi)
    End With
    If Index >= 10 Then
    stMvt = CStr(Index + 1)
    Else
    stMvt = "0" & (Index + 1)
    End If
    For Each cel In rPl
    If Application.WorksheetFunction.CountA(cel.Offset(-91, -136).Resize(1, 45)) <> 1 Then
    cel.Value = "00"
    Else
    cel.Value = stMvt
    End If
    Next
    End Sub#
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Gyrus Messages postés 3360 Statut Membre 526
     
    La première cellule de la plage rPl est GM2.
    Si tu demande à définir une plage qui commence à la cellule GM2 décalée de -91 lignes, tu vas crever l'écran !

    A+
    0
  7. Poor Frog Messages postés 9 Statut Membre
     
    Les donnees se trouvent dans les colonnes BB a CU soit de -136 a -91 vers la gauche de la colonne GM2

    J'ai du mal ecrire......
    0
  8. Gyrus Messages postés 3360 Statut Membre 526
     
    La colonne BB est décalée de -141 colonnes par rapport à GM.
    La colonne CU est décalée de -96 colonnes par rapport à GM.

    A+
    0
  9. Poor Frog Messages postés 9 Statut Membre
     
    La colonne BB est a -136 de GM
    La colonne CU est a -91 de GM

    tu as une idee ?
    0
  10. Poor Frog Messages postés 9 Statut Membre
     
    mon code fait 620 c'est un peu long a envoyer......
    0
  11. Gyrus Messages postés 3360 Statut Membre 526
     
    Je ne pense pas que l'on fait le même calcul :
    BB correspond à la colonne 54
    CU correspond à la colonne 99
    GM correspond à la colonne 195
    Décalage entre GM et BB : 54 - 195 = -141
    Décalage entre GM et CU: 99- 195 = -96
    Que dire de mieux ?

    Ton code tout seul ne servira à rien.
    C'est un classeur exemple qui sera utile pour comprendre la structure des données et la finalité du programme.

    A+
    0
  12. Poor Frog Messages postés 9 Statut Membre
     
    JUSTEMENT A TABLE JE ME DISAIS QU'IL Y AVAIT UN BUG!

    JE VAIS FAIRE LA MODIF ET JE TE DIS QUOI
    0
  13. Poor Frog Messages postés 9 Statut Membre
     
    Mille millions de mille sabord ca ne marche pas!!!!!!!!!

    comment te faire parvenir mon classeur pour que tu vois un peu.....
    0
  14. Poor Frog Messages postés 9 Statut Membre
     
    j'essaye encore un petit quelque chose.....
    0