Ecrire une chaine dans une cellule donnee

Fermé
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013 - 5 sept. 2013 à 14:47
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013 - 5 sept. 2013 à 23:08
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

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
5 sept. 2013 à 15:49
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
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 18:29
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
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
5 sept. 2013 à 19:08
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
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 19:50
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
5 sept. 2013 à 20:01
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
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 20:04
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
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
5 sept. 2013 à 20:13
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
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 20:17
La colonne BB est a -136 de GM
La colonne CU est a -91 de GM

tu as une idee ?
0
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 20:19
mon code fait 620 c'est un peu long a envoyer......
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
5 sept. 2013 à 20:45
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
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 22:06
JUSTEMENT A TABLE JE ME DISAIS QU'IL Y AVAIT UN BUG!

JE VAIS FAIRE LA MODIF ET JE TE DIS QUOI
0
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 22:26
Mille millions de mille sabord ca ne marche pas!!!!!!!!!

comment te faire parvenir mon classeur pour que tu vois un peu.....
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
5 sept. 2013 à 23:05
Tu peux utiliser le site https://www.cjoint.com/

A+
0
Poor Frog Messages postés 9 Date d'inscription jeudi 5 septembre 2013 Statut Membre Dernière intervention 5 septembre 2013
5 sept. 2013 à 23:08
j'essaye encore un petit quelque chose.....
0