IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ecrire une chaine dans une cellule donnée


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Ecrire une chaine dans une cellule donnée
    Bonjour a Tous,

    J'ai crée une base de donnée compositeur. Pour chaque œuvre musicale, je souhaiterai que les différents mouvements soient indiques dans une colonne dédiée (GM) sur 2 digits. "01" "02" etc.....

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


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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 appelée comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Call Ref_Mvt_Count(iMvt)
    iMvt étant l'entier qui contient le numéro du mouvement qui commence a "0"

    Qu'en pensez vous?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    j'en pense qu'il faut vraiment faire attention à la déclaration des variables !

    Et merci d'utiliser la prochaine fois l'icône # pour encadrer le code …


    Sinon en respectant la règle du TBTO, la procédure se résume à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Ref_Mvt_Count(Index As Byte)
        With Sheets("WORKS_DATA")
            .Range("GM2:GM" & .Cells(.Rows.Count, 2).End(xlUp).Row).Value = Format$(Index, "00")
        End With
    End Sub

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Tu n'indiques pas la version que tu utilises, mais déclare dLi as Long

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    Je ne crains que le probleme soit plus GRAVE...

    En effet :

    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 "run" 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.

    Merci

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    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"

    Il faut savoir que les donnees se trouvent dans les colonnes BB a CU soit de -136 a -91 vers la gauche de la colonne GM2.

    De mon humble avis j'ai du loupe quelque chose quelque part!!!!!


    #
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    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
    #

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Offset(-91, -136)
    Ceci veut dire 136 colonnes vers la gauche et 91 lignes vers le haut...
    Est-ce que c'est possible dans ton cas sachant que les lignes et colonnes commencent à 1 ?

    Si ça donne 0 ou un chiffre négatif, ça va assurément planter.
    Peut-être que tu devrais utiliser le Range tel quel plutôt que Offset (?)
    ex: Range("A" & Ligne) ou Cells(Ligne, 1)

Discussions similaires

  1. recherche d'une chaine dans une chaine
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 12h10
  2. recherche d'une chaine dans une chaine
    Par jpclutier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/12/2007, 11h30
  3. Tester une chaine dans une chaine
    Par ulysse031 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 26/03/2007, 00h48
  4. chercher caractére d'une chaine dans une chaine
    Par ulysse031 dans le forum Langage
    Réponses: 25
    Dernier message: 21/03/2007, 18h09
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo