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 :

Modifier l' adresse de la dernière cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Points : 117
    Points
    117
    Par défaut Modifier l' adresse de la dernière cellule
    Bonjour

    La ligne suivante permet de trouver la dernière cellule de la feuille de calcul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    data1 = Sheets("Feuil2").Cells.SpecialCells(xlCellTypeLastCell).Address
    Le problème est que cette adresse à une valeur qui ne correspond pas à la réalité, elle tient compte des données qui ont été supprimées.
    Existe-t-il un moyen pour mettre à jour cette valeur pour qu'elle corresponde à la réalité.


    Merci d'avance pour vos réponses.

    JP

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut DERNIERE CELLULE
    Bonsoir jp et le forum,

    Regarde ce lien

    tutoriel l'ami ousskelnor

    et cherche ce tuto sur Google :
    Manipuler un range ou plage de données, en VBA
    (classeur mentionné à télécharger)

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Points : 117
    Points
    117
    Par défaut Adresse de la dernière cellule
    Bonsoir MarcelG, et le forum



    Merci pour les indications.
    Concernant "xlCellTypeLastCell" il est indiqué
    Si des lignes sont supprimées dans la plage, enregistrer le fichier pour avoir le réel N° de la dernière ligne (idem pour les colonnes supprimées)
    J'ai sauvegardé mon fichier, j'ai supprimé les lignes, les colonnes je trouve toujours la même valeur.

    Il suffit de faire "CTRL" "Fin" pour voir l'adresse qui est indiqué avec cette constante.

    JP

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    tu as la réponse dans la citation:
    Si des lignes sont supprimées dans la plage, enregistrer le fichier
    .
    Ce qui veux dire que tu supprimes D'ABORD ta ligne ou ta colonne et que tu enregistres APRES.
    et non pas :
    J'ai sauvegardé mon fichier, j'ai supprimé les lignes, les colonnes je trouve toujours la même valeur
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Points : 117
    Points
    117
    Par défaut
    Bonjour

    Merci pour vos réponse, effectivement cela fonctionne quand on fait les manipulations dans les feuilles d'excel, mais par macro c'est un autre problème.

    JP

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    bonjour
    tu supprime ce que tu veux et tu lance cette macro
    normalement elle te donne la derniere ligne utilisée dans la colonne A en partant de la derniere celule de la sheet meme si tu a des blancs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub trouver_la_derniere_ligne()
    'trouver la la derniere ligne en partant d'en bas
    ligne = Range("A" & Rows.Count).End(xlUp).Row
    MsgBox ligne
     
    End Sub
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    le code de patricktoulon, que je salue , permet en effet de trouver le numéro de la dernière ligne utilisée, oui mais uniquement de la colonne A.

    Voici un code qui permet de trouver la dernière cellule utilisée de la feuille 1, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim derlign As Long
    derlign = Sheets("Feuil1").Cells.Find("*", , , , , xlPrevious).Row
    donc pour ton cas ou tu cherches l'adresse de la dernière cellule utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data1 = Sheets("Feuil2").Cells.Find("*", , , , , xlPrevious).Address
    Pas besoin d'enregistrer après chaque suppression.
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Points : 117
    Points
    117
    Par défaut
    Bonsoir

    Merci pour vos réponses, à priori il n'y a pas de solution pour mettre à jour par macro cette variable d'excel pour trouver la première ligne libre lorsque le remplissage des colonnes n'est pas uniforme, il faut donc prendre des chemins détournés pour résoudre ce problème.

    JP

  9. #9
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    à priori il n'y a pas de solution pour mettre à jour par macro cette variable d'excel pour trouver la première ligne libre lorsque le remplissage des colonnes n'est pas uniforme
    Je t'ai donné une réponse il me semble
    Voici un code qui permet de trouver la dernière cellule utilisée de la feuille 1, par exemple:

    Code :
    Dim derlign As Long
    derlign = Sheets("Feuil1").Cells.Find("*", , , , , xlPrevious).Row
    en fait avec cette ligne de code tu donnes à la variable derlign le numéro de la dernière ligne utilisée de ta feuille quelque soit la colonne.

    pour avoir le numéro de la première ligne vide de ta feuille quelque soit la colonne il suffit de rajouter 1 à derlign comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim derlign As Long
    derlign = Sheets("Feuil1").Cells.Find("*", , , , , xlPrevious).Row + 1
    Peux-être pourrais-tu mettre ton code et expliquer ce qu'il est censé faire afin que l'on puisse t'aider au mieux, puisque apparemment tu veux mettre ta variable data1 à jour, ok, mais comment t'aider avec juste une ligne de code?
    On te réponds avec une ligne de code
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Points : 117
    Points
    117
    Par défaut
    Bonjour rvtoulon, le forum

    J'ai bien noté ta solution que j'utilise et je t'en remercie, ma réflexion concernait la variable "xlCellTypeLastCell" qui n'est pas mise à jour et de ce fait inexploitable en vba

    JP

  11. #11
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Bien sur que tu peux utiliser la variable "xlCellTypeLastCell" en VBA. Mais comme l'a dit rvtoulon : Ce qui veux dire que tu supprimes D'ABORD ta ligne ou ta colonne et que tu enregistres APRES
    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MsgBox Sheets("Feuil2").Cells.SpecialCells(xlCellTypeLastCell).Address
    Rows(numéro_de_ligne).Delete
    MsgBox Sheets("Feuil2").Cells.SpecialCells(xlCellTypeLastCell).Address
    ActiveWorkbook.Save
    MsgBox Sheets("Feuil2").Cells.SpecialCells(xlCellTypeLastCell).Address
    Sinon, une autre solution trouvée ici :http://www.developpez.net/forums/d45...gnees-feuille/
    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
    Dim derLig As Integer, DerCol As Integer
    Dim col As String
     
    derLig = Split(Worksheets("Feuil2").UsedRange.Address, "$")(4)
    col = Split(Worksheets("Feuil2").UsedRange.Address, "$")(3)
    DerCol = Range(Split(Worksheets("Feuil2").UsedRange.Address, "$")(3) & 1).Column
     
    MsgBox derLig
    MsgBox DerCol
    MsgBox col
     
    Rows(num_de_ligne).Delete
    Columns(num_de_col).Delete
     
    derLig = Split(Worksheets("Feuil2").UsedRange.Address, "$")(4)
    col = Split(Worksheets("Feuil2").UsedRange.Address, "$")(3)
    DerCol = Range(Split(Worksheets("Feuil2").UsedRange.Address, "$")(3) & 1).Column
     
    MsgBox derLig
    MsgBox DerCol
    MsgBox col
    Cordialement,
    Franck

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

Discussions similaires

  1. Comment identifier la dernière cellule modifiée
    Par Tho69 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 29/09/2021, 13h37
  2. [OLE Excel] Aller jusqu'à la dernière cellule rempli
    Par JBrek dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 07/08/2009, 19h21
  3. Réponses: 1
    Dernier message: 26/05/2007, 15h20
  4. [VBA-E] Repérer la dernière cellule modifiée
    Par aokiseiichiro dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/05/2006, 15h45
  5. modifier l'adresse d'un dll dans un .exe
    Par Mr Meuble dans le forum Windows
    Réponses: 4
    Dernier message: 02/03/2004, 16h39

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