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 :

Valeur incohérente prise par une cellule à partir d'un certain rang n. [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut Valeur incohérente prise par une cellule à partir d'un certain rang n.
    Bonjour à tous, je suis nouveau dans le forum et débutant en VBA. Donc pardonnez-moi par avance si je galère avec les boutons

    Je viens à vous car j'ai un problème que je n'arrive pas à résoudre. J'ai créé un code permettant de compter le nombre de cases vides d'une certaine portion de mon tableau, et renvoyer ce nombre dans une cellule spécifique intégrant du texte et la variable n déclarée en Type Entier qui représente ce nombre de cases vides. Voici le 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
     
     
    Sub variete_produits()
     
    Dim i As Integer
    Dim j As Integer
    Dim n As Integer
     
     
     
        For j = 5 To 20
            n = 0
            For i = 19 To 48
     
     
                If Cells(j, i) = "" Then
                    n = n + 1
                    Cells(j, 5) = n & " / 30"
                End If
     
            Next
        Next
     
     
    End Sub
    Le programme passe en revue toutes les colonnes de 19 à 48 de la ligne 5, incrémente n de 1 quand il rencontre une case vide, renvoie ce nombre n de cases vides dans la cellule (5,5). Et ainsi de suite avec les lignes 6, 7 .. Jusqu'à 20.
    Le programme marche très bien,

    Sur ce screen, toutes les cellules de ma première ligne ( ligne 5) sont vides, et selon mon programme il est normal qu'il m'affiche "30/30"

    Nom : Pb TabExcel1.JPG
Affichages : 113
Taille : 85,0 Ko

    La logique continue :

    Nom : Pb TabExcel2.JPG
Affichages : 115
Taille : 86,5 Ko

    C'est pas mal tout ça !

    Nom : Pb TabExcel3.JPG
Affichages : 117
Taille : 108,6 Ko

    MAIS

    à partir de n = 12 , la cellule pète un câble et me renvoie un entier au lieu de la forme (n "/ 30") Comme suit :

    Nom : Pb TabExcel4.JPG
Affichages : 116
Taille : 108,0 Ko

    Donc tout simplement je ne comprends pas ! Si quelqu'un pourrait m'éclairer de sa science ça serait génial.


    Ah oui et j'oubliais, voici ce qui se passe dans le tableur quand je modifie le code de cette manière pour avoir non pas le nombre de cases vides mais le nombre de cases remplies , de manière à avoir 0/30 quand toutes les cases sont vides :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 5) = 30 - n & " / 30"
    Résultat :

    Nom : Pb TabExcel5.JPG
Affichages : 103
Taille : 63,0 Ko

    Voilà ...

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour
    Citation Envoyé par Kogami997 Voir le message
    la cellule pète un câble et me renvoie un entier au lieu de la forme (n "/ 30")
    Pas facile qu'une cellule "pète un cable", mais comme tu emploies le délimiteur de date standard comme texte "/"
    et que ta cellule est en format standard, excel essaie d'afficher la date qu'il a reconnue.

    Si tu veux utiliser ce format il te suffit de mettre ta colonne au format texte mais excel devrait te signaler que ta cellule contient une date.

    Sinon au lieu de mettre Cells(j, 5) = n & " / 30" tu mets ceci et cela va fonctionner car c'est un espace non sécable que tu rajoutes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 5) = n & Chr(160) & "/" & Chr(160) & "30"

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut
    Citation Envoyé par anasecu Voir le message

    Pas facile qu'une cellule "pète un cable"
    Oui ... Ok, merci pour la réponse

  4. #4
    Expert éminent 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
    Par défaut
    Parce que Excel interprète ta chaine de caractère comme une date.

    Avant tes For To, mets la ligne suivante et tu seras tranquille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E5:E20").NumberFormat = "@"

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Par défaut
    Ok merci j'ai compris

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/12/2009, 11h04
  2. [AC-2000] Remplacer une valeur par une autre à partir d'une requête
    Par tibogaet dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/08/2009, 14h23
  3. [Tableaux] Recupérer une chaine à partir d'un certain Rang
    Par elmarokinho dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2008, 10h26
  4. changer les valeurs graphique sans passer par une cellule
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/11/2007, 19h56
  5. Réponses: 3
    Dernier message: 26/06/2007, 18h00

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