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 :

[Excel 2019] mes accès aux cellules, restent vides


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut [Excel 2019] mes accès aux cellules, restent vides
    [Excel 2019]


    Bonjour

    je fais se post, pour comprendre pourquoi, mes accès aux cellule restent vides;

    dans ma collecte des données, je veux restituer les valeurs, des cellules; dans les colonnes de E5:K5, pour chaque années

    est ce que la déclaration, de ma fonction , est en cause ??

    merci a tous conseils.

    ci-joint, une partie du code VBA ci-dessous.


    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
     
    For Each colLetter In Array("E", "F", "G", "H", "I", "J", "K")
    		 ' je Réinitialise les tableaux et dictionnaires à chaque itération de collecter
                Erase topNumbers
                Erase bottomNumbers
                Set dict = CreateObject("Scripting.Dictionary")
         '--- je Boucle pour parcourir les lignes, année en cours
                      ' Par exemple, pour l'année 1976 :
                  Debug.Print "Total pour:" & year; ":" & yearTotals(year)    'je vois l'année, en cours de traitement, et son nombre d'occurrence
    			' j'Effectues le traitement des données ici
     
         ' j'Effectue le traitement des données ici
    			For iRow = 5 To LastDataRowInColumn(colLetter)
                  ' je Boucle pour parcourir les colonnes de E5 à K5; dans l'année en cours..  ---->( mes colonnes, sont biens alimentées, en valeurs ) 
    			 j' Accéde à la cellule correspondante
    				Set cellnum = ws.Cells(iRow, LastDataRowInColumn(colLetter))   --------> ( c'est ici, que cela bloque, mon set ne fonctionne pas correctement, ceci-dit mes colonnes, sont bien restituées; et chaque itérations sont entreprises  
     				If IsNumeric(cellnum.Value) And IsNumeric(cellnum.Offset(0, -4).Value) Then
                        If CInt(cellnum.Offset(0, -4).Value) = year Then
                            'je RempliS le dictionnaire avec les numéros et leurs occurrences
                            Dim num As Variant
                              num = cellnum.Value
                                If Not dict.Exists(num) Then
                                dict(num) = 1
                            Else
                                dict(num) = dict(num) + 1
                            End If
                        End If
                    End I
    			Next iRow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Function LastDataRowInColumn(ByVal colLetter As String) As Long
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Worksheets("Tirages") 'je remplace le nom, de ma feuille, ou se trouve les données
     
        ' je Recherche de la dernière ligne non vide dans la colonne spécifiée
        LastDataRowInColumn = ws.Cells(ws.Rows.Count, colLetter).End(xlUp).Row
    End Function

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    la ligne suivante est mauvaise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set cellnum = ws.Cells(iRow, LastDataRowInColumn(colLetter))
    le deuxième paramètre de Cells doit représenter la colonne :
    A essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set cellnum = ws.Cells(iRow, colLetter)
    A noter pour le deuxième paramètre ColumnIndex :
    ColumnIndex peut être fourni sous forme d’index numérique ou de chaîne d’adresse de colonne comme dans la notation A1, c’est-à-dire "A" qu’il fait référence à l’index 1 numérique et "AA" à 27.
    Ami calmant, J.P

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut
    merci à jurassic pork pour sa participation

    merci pour ton conseil; je vais prendre cette piste, et faire des essais

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut

    rebonjour , je revenais avec un peu de retard

    Effectivement j'ai pris ta piste , mais une petite modification s'imposait dans le format de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set cellnum = ws.Cells(iRow, colLetter)
    modifier par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set cellnum = ws.Range(colLetter & iRow)
    une autre façon complémentaire, pour avoir accès aux cellules, était aussi de coupler la fonction "Range" à la ligne de code proposer ci-dessous

    , à cause de ma fonction colLetter (qui me retournait "E"; "F" jusqu'a "K" ) dans le traitement des colonnes.

    et cela a répondu a se que je cherchais .


  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set cellnum = ws.Cells(iRow, colLetter)   bien sur, se format est valable

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

Discussions similaires

  1. [XL-2007] un fichier EXCEL qui donne accés aux autres fichiers du programme
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/12/2015, 08h54
  2. Accées Aux cellules dans un DataGrid View
    Par prof ali dans le forum ADO.NET
    Réponses: 4
    Dernier message: 30/01/2011, 03h22
  3. Accélerez les accès aux cellules
    Par jphlopez dans le forum Contribuez
    Réponses: 0
    Dernier message: 26/08/2010, 10h50
  4. philosophie d'acces aux cellules avec vba?
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/02/2008, 23h07
  5. Réponses: 1
    Dernier message: 05/09/2005, 19h18

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