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 :

Cellule non alimentée [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 49
    Par défaut Cellule non alimentée
    Bonjour,
    Je viens de créer un code qui me permet d'alimenter de nouvelles cellules

    Je ne comprends pas pourquoi les cellules ne s'alimentent pas (La partie alimentation produits - ligne 77)

    Voici mon code :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Sub NouveauxCodes()
     
    Application.ScreenUpdating = False
     
    'Définition des variables
    Dim Traite As Range
    Dim GLdate As Variant
    Dim Partner As Variant
    Dim Product As Variant
    Dim LocaReserve As Variant
    Dim LocalDescription As Variant
    Dim Devise As Variant
    Dim Montant As Variant
     
    Dim Nouveau As Range
    Dim NouveauGLdate As Variant
    Dim NouveauPartner As Variant
    Dim NouveauProduct As Variant
    Dim NouveauCostCenter As Variant
    Dim NouveauLocalDescription As Variant
    Dim NouveauDevise As Variant
    Dim NouveauMontant As Variant
     
     
    'Définition des feuilles
    Dim ShPdts As Worksheet
    Dim ShGLEMTN As Worksheet
     
    Set ShPdts = Worksheets("produits_emissions AMUNDI")
    Set ShGLEMTN = Worksheets("02-03 - GL")
     
    ShGLEMTN.Range("R3:Y1048576").Clear
     
    'Balayage colonne Alimenté
    For Each Traite In ShGLEMTN.Range("O2", ShGLEMTN.Range("O1048576").End(xlUp)).Cells
        'Valeur de la ligne
        Set GLdate = Traite.Offset(0, -12)
        Set Partner = Traite.Offset(0, -9)
        Set Product = Traite.Offset(0, -7)
        Set LocaReserve = Traite.Offset(0, -6)
        Set LocalDescription = Traite.Offset(0, -5)
        Set Devise = Traite.Offset(0, -4)
        Set Montant = Traite.Offset(0, -2)
     
        'Condition de nouveaux codes
        If Traite <> "Oui" Then
            ShGLEMTN.Range("R1048576").End(xlUp).Offset(1, 0).NumberFormat = "dd/mm/yyyy"
            ShGLEMTN.Range("R1048576").End(xlUp).Offset(1, 0).Value = GLdate
            ShGLEMTN.Range("S1048576").End(xlUp).Offset(1, 0).Value = Partner
            ShGLEMTN.Range("U1048576").End(xlUp).Offset(1, 0).Value = Product
            ShGLEMTN.Range("V1048576").End(xlUp).Offset(1, 0).Value = LocaReserve
            ShGLEMTN.Range("W1048576").End(xlUp).Offset(1, 0).Value = LocalDescription
            ShGLEMTN.Range("X1048576").End(xlUp).Offset(1, 0).Value = Devise
            ShGLEMTN.Range("Y1048576").End(xlUp).Offset(1, 0).Value = Montant
            ShGLEMTN.Range("AB1").Copy
            ShGLEMTN.Range("T1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulas
     
        End If
     
    Next Traite
     
    ShGLEMTN.Range("T2:T1048576").Copy
    ShGLEMTN.Range("T2:T1048576").PasteSpecial xlPasteValues
     
     
    'Balayage des nouveaux codes produits
    For Each Nouveau In ShGLEMTN.Range("V3", ShGLEMTN.Range("V1048576").End(xlUp)).Cells
        'Valeur de la ligne
        Set NouveauGLdate = Nouveau.Offset(0, -4)
        Set NouveauPartner = Nouveau.Offset(0, -3)
        Set NouveauCostCenter = Nouveau.Offset(0, -2)
        Set NouveauProduct = Nouveau.Offset(0, -1)
        Set NouveauLocalDescription = Nouveau.Offset(0, 1)
        Set NouveauDevise = Nouveau.Offset(0, 2)
        Set NouveauMontant = Nouveau.Offset(0, 3)
     
        'Alimentation produits
        ShPdts.Range("A5").End(xlDown).Offset(1, 0).Value = Nouveau
        ShPdts.Range("A5").End(xlDown).Offset(0, 1).Value = NouveauPartner
        ShPdts.Range("A5").End(xlDown).Offset(0, 2).Value = NouveauProduct
        ShPdts.Range("A5").End(xlDown).Offset(0, 5).Value = NouveauLocalDescription
        ShPdts.Range("A5").End(xlDown).Offset(0, 3).Value = NouveauCostCenter
        ShPdts.Range("A5").End(xlDown).Offset(0, 6).Value = NouveauDevise
        ShPdts.Range("A5").End(xlDown).Offset(0, 7).Value = NouveauMontant
     
    Next Nouveau
     
    Call Operationnews
     
    End Sub
    Je vous remercie pour votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Peux-tu fournir un classeur avec des données anonymisées ?
    Ce sera plus facile à reproduire.

  3. #3
    Membre averti
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 49
    Par défaut
    Bonjour,
    Ci-joint le fichier correspondant.
    Il se positionne bien sur la bonne ligne mais la ligne n'est pas alimentée.
    Je ne comprends pas pourquoi.
    TestmacroAlimCellule.xlsm

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    J'ai fait un test, toutes les cellules sont alimentées.

    Je pense que tu as fait un erreur dans le calcul de la cellule cible:
    Au premier tour de boucle:
    ShPdts.Range("A5").End(xlDown).Offset(1, 0) ==> désigne la cellule A8.
    ShPdts.Range("A5").End(xlDown).Offset(0, 1) ==> désigne la cellule B7.
    C'est plutôt bizarre d'écrire des données sur 2 lignes différentes.

    N'hésite pas à coller des points d'arrêt et vérifier l'adresse de tes cellules cibles,
    avec par exemple, l'instruction suivante dans la fenêtre d'execution:
    ?ShPdts.Range("A5").End(xlDown).Offset(0, 7).Address

    Notes supplémentaires:
    Je t'invites à utiliser des tableaux structurés, ces derniers connaissant les informations sur leurs lignes / colonnes,
    ca t'éviteras d'écrire des trucs lourdingue de ce genre:
    ShGLEMTN.Range("R1048576").End(xlUp)

    Par respect du SRP (https://en.wikipedia.org/wiki/Single...lity_principle), je t'invite à ségréger ton code en plusieurs fonction.
    Au moins:
    Une fonction en charge d'acquérir les données.
    Une fonction en charge de mettre à jour les données.
    Une fonction qui appelle les 2 précédente pour réaliser les traitement.

    Et par respect de la Loi de Demeter (https://fr.wikipedia.org/wiki/Loi_de_D%C3%A9m%C3%A9ter), je t'invite à utiliser des arguments.
    Tu y gagneras en lisibilité, en compréhension et en maintenance.

  5. #5
    Membre averti
    Homme Profil pro
    Agent administratif
    Inscrit en
    Juin 2022
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Agent administratif
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2022
    Messages : 49
    Par défaut
    Je te remercie pour ton aide.
    J'ai remplace le down par le up et ça fonctionne.
    J'avvance tout doucement sur les macro, je tiendrai compte de tes remarques pour les prochaines.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] alimenter combo depuis une zone de cellules (non determinée)
    Par LostIN dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2006, 11h24
  2. [JTable] Cellule non modifiable
    Par Mister Nono dans le forum Composants
    Réponses: 4
    Dernier message: 11/03/2006, 18h50
  3. [EXCEL][VBA] Compter les cellules non-vides
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2006, 15h40
  4. [VBA-E]selectionner la premiere cellule non vide d'une ligne
    Par muse47 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/10/2005, 08h11
  5. [JTable]cellules non rafraichies
    Par freudy dans le forum Composants
    Réponses: 3
    Dernier message: 02/07/2004, 16h03

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