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 :

Problème avec mon code


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
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut Problème avec mon code
    Bonjour,

    Je débute dans le VBA et j'ai tenté de faire un "exercice" qu'on ma donné pour m'entrainer.

    Alors voila j'ai une première suite de chiffre (en bleue) et une autre suite de chiffre (en verte). (voir capture) Nom : Excel.PNG
Affichages : 119
Taille : 6,8 Ko

    Pour que ce soit plus simple la première liste je vais l'appeler la liste a (bleue) et la seconde la liste b (verte)

    Je veux qu'il sélectionne le premier chiffre de la liste a et qu'il le multiplie successivement avec tous les chiffres de la liste b mais en réalisant une multiplication par cellule et faire la suivante en dessous de la précédente. (Voir capture du résultat attendu) Nom : Resultat souhaité.PNG
Affichages : 117
Taille : 11,4 Ko

    J'ai réalisé un code mais ça coince à un endroit et je ne comprends pas pourquoi. (voir code) Nom : CODE.PNG
Affichages : 114
Taille : 14,0 Ko

    c'est peut-être tout bête mais je vois pas.

    (Désolé si je n'ai pas fait ce qu'il fallait c'est la première fois que je poste sur le forum)

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    Plutôt qu'une capture d'écran, copie/colle ton code et utilise la balise code (bouton #), il manque aussi le descriptif de l'erreur.
    Jouer avec les Activate est rarement une bonne idée, tu peux écrire dans une cellule sans l'activer.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    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
     
    Sub Calcul_2()
    Range("E11").Select
    cmin = ActiveCell.Offset(-4, 0).Value
    cmax = ActiveCell.Offset(-4, -1).Value
    l1 = ActiveCell.Offset(-3, 0).Value
    l2 = ActiveCell.Offset(-2, 0).Value
    c1 = cmin
    c2 = cmin
     
    While c1 <= cmax
     
        While c2 <= cmax
        a = Cells(l1, c1) * Cells(l2, c2)
        ActiveCell.Offset(1, 0).Activate
        c2 = c2 + 1
        Wend
    ActiveCell.Offset(-4, 1).Activate
     
    c2 = cmin
    c1 = 1
     
    Wend
     
     
    End Sub
    D'accord du coup que me conseillez-vous ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    Merci Mennhir et halaster08

    Voici l'erreur qui apparait Nom : Capture.PNG
Affichages : 145
Taille : 25,5 Ko

    Désolé je n'ai pas encore les bons réflexes

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    cells(i,j) attend pour i et pour j des nombres entier, comme tu n'as pas défini tes variables (dim i as integer par exemple), Vba l'as fait a ta place, et il vu l'erreur il y a de forte chance qu'il se soit planter.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    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
     
    Sub Calcul_2()
    Range("E11").Select
    cmin = Cells(7, 5).Value
    cmax = Cells(7, 4).Value
    Dim l1 As Integer
    Dim l2 As Integer
    Dim c1 As Integer
    Dim c2 As Integer
    l1 = Cells(8, 5).Value
    l2 = Cells(7, 5).Value
    c1 = cmin
    c2 = cmin
     
    While c1 <= cmax
     
        While c2 <= cmax
        ActiveCell.Value = Cells(l1, c1).Value * Cells(l2, c2).Value
        ActiveCell.Offset(1, 0).Activate
        c2 = c2 + 1
        Wend
    ActiveCell.Offset(-4, 1).Activate
     
    c2 = cmin
    c1 = 1
     
    Wend
     
     
    End Sub
    Hum ... je viens de définir les valeurs l1 l2 c1 et c2 comme des entiers mais l'erreur est toujours là.
    Je m'y suis mal pris je suppose ?

    Cependant je viens de noter qu'il a bien multiplié le premier terme de la liste a à tout ceux de la liste b les uns à la suite des autres mais après il s'est stoppé

  7. #7
    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
    Deux remarques liminaires :
    Quand tu mets ton code dans un message, fais une copie texte (avec des balises CODE) plutôt qu'une image parce qu'on ne peut pas reprendre ton code pour le corriger.
    Deuxièmement, "ça coince", ce n'est pas très explicite comme description : est-ce que l'exécution génère un message d'erreur (et, dans ce cas, lequel) ? Est-ce que le résultat est différent de ce que tu souhaites ?

    Une remarque sur ton code : pourquoi jouer uniquement avec des ActiveCell.Offset ?
    Ne serait-il pas plus simple de donner directement les adresses de cellules ?
    Par exemple, pour le début de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cmin = Cells(7, 5).Value
    cmax = Cells(7, 4).Value
    l1 = Cells(8, 5).Value
    l2 = Cells(7, 5).Value
    Pour ce qui est de ton problème, la première chose à vérifier, c'est les valeurs contenues dans les variables.
    Regarde dans la liste des variables locales les valeurs contenues dans l1, c1, l2 et c2.

  8. #8
    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
    Citation Envoyé par Tenebrah Voir le message
    D'accord du coup que me conseillez-vous ?
    Citation Envoyé par Menhir Voir le message
    Pour ce qui est de ton problème, la première chose à vérifier, c'est les valeurs contenues dans les variables.
    Regarde dans la liste des variables locales les valeurs contenues dans l1, c1, l2 et c2.

  9. #9
    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
    Citation Envoyé par Tenebrah Voir le message
    Voici l'erreur qui apparait
    Nom : Capture.PNG
Affichages : 145
Taille : 25,5 Ko
    Regarde aussi le contenu des deux cellules concernées par la multiplication (en fonction du contenu des variables au moment du plantage).
    Je n'ai pas de certitude mais je mettrais volontiers une pièce sur le probabilité qu'une des deux ne contient pas une valeur numérique (ce qui plante la multiplication).

    Pourrais-tu faire une copie d'écran comme celle de ton premier message mais sur laquelle on voit les numéros de ligne et de colonne.
    Parce que dans ton code, certaines variables sont renseignées par des contenu de cellules et sont ensuite utilisées comme coordonnées, ce qui semble étrange (mais est peut-être normal).

  10. #10
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Regarde aussi le contenu des deux cellules concernées par la multiplication (en fonction du contenu des variables au moment du plantage).
    Je n'ai pas de certitude mais je mettrais volontiers une pièce sur le probabilité qu'une des deux ne contient pas une valeur numérique (ce qui plante la multiplication).
    Si le problème est là, tu peux utiliser la fonction Cint pour forcer la conversion
    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
     
    Sub Calcul_2()
    Range("E11").Select
    cmin = Cells(7, 5).Value
    cmax = Cells(7, 4).Value
    Dim l1 As Integer
    Dim l2 As Integer
    Dim c1 As Integer
    Dim c2 As Integer
    l1 = Cells(8, 5).Value
    l2 = Cells(7, 5).Value
    c1 = cmin
    c2 = cmin
     
    While c1 <= cmax
     
        While c2 <= cmax
        ActiveCell.Value = Cint(Cells(l1, c1).Value) * cint(Cells(l2, c2).Value)
        ActiveCell.Offset(1, 0).Activate
        c2 = c2 + 1
        Wend
    ActiveCell.Offset(-4, 1).Activate
     
    c2 = cmin
    c1 = 1
     
    Wend
     
     
    End Sub
    Et pourquoi tu as C1=1 et pas C1 = C1+1

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    Et pourquoi tu as C1=1 et pas C1 = C1+1[/QUOTE]


    Parce que c'est un gros oublie de ma part ... je vais essayer avec ce que tu m'as dit

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

Discussions similaires

  1. [JDOM] problème avec mon code
    Par aroua dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 30/04/2008, 13h36
  2. problème avec mon code pour accès au serveur ftp
    Par mimi51340 dans le forum Général Java
    Réponses: 1
    Dernier message: 03/03/2008, 23h24
  3. Problème avec mon code - un aperçu
    Par nsimon70 dans le forum Flash
    Réponses: 1
    Dernier message: 14/02/2008, 12h47
  4. [MySQL] problème avec mon code (envoi données) ?
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/12/2007, 09h45
  5. probléme avec mon code JAVA et MYSQL
    Par ulysse031 dans le forum JDBC
    Réponses: 5
    Dernier message: 10/05/2007, 00h46

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