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 :

Remplacer une cellule vide par une valeur [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    e-commerçant
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : e-commerçant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Remplacer une cellule vide par une valeur
    Bonjour

    je souhaite , avec une macro, rechercher une cellule vide dans une colonne et remplacer celle-ci par une valeur contenue dans une autre cellule.

    Exemple:

    dans la colonne E, je recherche la première cellule vide, et je remplace celle-ci par la valeur contenue dans la cellule A3.

    Merci de votre aide

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Tiagra, bonjour le forum,

    Deux options si au moins une cellule de la colonne n'est pas vide :
    • à utiliser si tu recherches la première cellule vide en bas de la colonne de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro1()
    Dim O As Object 'déclare la variable O (onglet)
    Dim CV As Range 'déclare la variable CV (Cellule Vide)
     
    Set O = sheest("Feuil1") 'définit l'onglet O (à adapter)
    Set CV = O.Cells(Application.Rows.Count, 5).End(xlUp).Offset(1, 0) 'définit la cellule CV (première ligne vide de la colonne 5 (=E) de l'onglet O, en partant du bas)
    CV.Value = O.Range("A3").Value 'récupère dans CV la valeur de la cellule A3
    End Sub

    • à utiliser si tu cherches à remplir des "trous" (cellules vides dans dans la colonne de données) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro2()
    Dim O As Object 'déclare la variable O (onglet)
    Dim CV As Range 'déclare la variable CV (Cellule Vide)
     
    Set O = sheest("Feuil1") 'définit l'onglet O (à adapter)
    Set CV = O.Range("E1").End(xlDown).Offset(1, 0) 'définit la cellule CV (première ligne vide de la colonne 5 (=E) de l'onglet O, en partant du haut)
    CV.Value = O.Range("A3").Value 'récupère dans CV la valeur de la cellule A3
    End Sub

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Thautheme Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro2()
    Dim O As Object 'déclare la variable O (onglet)
    Dim CV As Range 'déclare la variable CV (Cellule Vide)
     
    Set O = sheest("Feuil1") 'définit l'onglet O (à adapter)
    Set CV = O.Range("E1").End(xlDown).Offset(1, 0) 'définit la cellule CV (première ligne vide de la colonne 5 (=E) de l'onglet O, en partant du haut)
    CV.Value = O.Range("A3").Value 'récupère dans CV la valeur de la cellule A3
    End Sub
    Ne serait-il pas plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro()
       Range("E1").End(xlDown).Offset(1, 0).Value = Range("A3").Value
    End Sub
    En supposant que tu as sélectionné la feuille concernée avant de lancer la macro. Sinon, il faudra ajouter un Worksheets("MaFeuille") devant chaque Range
    Les ".Value" sont facultatifs (si tu les enlèves, ça marchera sans doute toute aussi bien).

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Tu as tout à fait raison Menhir mais je préfère ne rien supposer (je suis pas du genre suppositoire...) et j'aime bien coder comme un novice (que je suis) en écrivant toutes les propriétés même si elles sont par défaut... Comme on dit Les coups et les douleurs hein !...

  5. #5
    Candidat au Club
    Homme Profil pro
    e-commerçant
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : e-commerçant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Alors la, Mehnir , respect !!

    Plus simple n'est pas possible, et en plus cela fonctionne parfaitement.
    Et le plus simple , c'est exactement ce qu'un néophyte comme moi à besoin.

    merci encore et bonne journée

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    C'est sympa, voisin, tu m'ignores carrément !
    ...

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Tiagra Voir le message
    Alors la, Mehnir , respect !!
    Je n'ai fait que reprendre le second code de Thautheme et faire un peu d'élagage.

    Pour le consoler, Thautheme, je te

  8. #8
    Candidat au Club
    Homme Profil pro
    e-commerçant
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : e-commerçant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Non, ce n'est pas ce que j'ai voulu dire.

    Je n'ignore personne , mais avoues que sa formule est d'une simplicité sans égale (1 ligne) , ce qui , pour un ignorant comme moi , était difficile à imaginer.

    Par contre, je dois évidement m'excuser pour ne pas t'avoir remercié de tes réponses.. ce que je fais.

    Mille excuses et bonne journée à toi

  9. #9
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    J'avoue surtout que j'avais fait l'effort de te soumettre deux options et t'expliquant et commentant le code et que tu m'as, dans un premier temps, complètement ignoré. Pas sympa...
    Quant à l'efficacité de Menhir, elle est plus que reconnue, si je ne m'abuse, dans ce forum. Merci à lui pour le lot de consolation...

  10. #10
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour à tous.

    Pour ne pas avoir de mauvaises surprises, il ne faut pas oublier que End(XlDown) (qui est l'équivalent du raccourci-clavier CTRL-Touche vers le bas) a 2 fonctions. Il trouve alternativement la dernière cellule non vide d'un range puis la première cellule non vide du range suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MaMacro()
       Set rg = Range("E1").End(xlDown)
     
       If rg.Offset(1) <> "" Then 'Si la ligne suivante n'est pas vide, c'est la précédente qui est vide
         Set PremiereLigneVide = rg.Offset(-1)
        Else
         Set PremiereLigneVide = rg.Offset(1)
       End If
        PremiereLigneVide.Select
     
    End Sub

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2015, 09h29
  2. Réponses: 4
    Dernier message: 17/09/2014, 16h29
  3. [XL-2010] Remplacer cellule vide par une valeur
    Par kyasteph dans le forum Excel
    Réponses: 7
    Dernier message: 02/02/2014, 16h22
  4. [VxiR2] Remplacer cellules vides par une valeur
    Par mouhib dans le forum Webi
    Réponses: 7
    Dernier message: 01/12/2010, 09h53
  5. différencier une cellule vide d'une cellule nulle
    Par schwarzy2 dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/09/2008, 13h50

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