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 :

erreur sur fonction d'égalité [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2020
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2020
    Messages : 129
    Par défaut erreur sur fonction d'égalité
    Bonjour
    J'ai le code ci dessous qui me renvoi un erreur 1004 sur la ligne 28.
    Et je ne comprend pas pourquoi. J'ai utiliser la même commande d'égalité, dans une autre macro, également dans une boucle while, également avec des variables pour définir les colonnes, également entre 2 onglets.
    Relu 4 fois le bazar pour traquer une faute de frappe, un espace en trop...rien.

    Une bonne âme pourrait-elle me trouver le problème?

    Merci d'avance

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Dim ligneoffre As Integer, ligneselec As Integer
    ligneoffre = 19
    ligneselec = 13
     
    'trier par N° de machine croissant
    Sheets("Selection").Activate
    ActiveWorkbook.Worksheets("Selection").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Selection").AutoFilter.Sort.SortFields.Add Key:= _
            Range("e12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Selection").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
    'tester existance d'une machine
    Range("E13").Select
    If ActiveCell.Value = "" Then
        MsgBox ("Aucune machine selectionnée")
        Exit Sub
    End If
     
    While ActiveCell.Value <> "" 'tant qu'il y a une machine sélectionnée
                    'on copie les valeurs
               Worksheets("Offre client").Cells(ligneoffre, "b") = Worksheets("Selection").Cells(ligneselect, "e")
               Worksheets("Offre client").Cells(ligneoffre, "c") = Worksheets("Selection").Cells(ligneselect, "g")
               Worksheets("Offre client").Cells(ligneoffre, "e") = Worksheets("Selection").Cells(ligneselect, "n")
     
              ligneoffre = ligneoffre + 1  'incrémenter le N de ligne où copier la machine
              ligneselect = ligneselect + 1 'incrementer le N° de ligne de la machine
     
              Sheets("Offre client").Activate
              Rows(ligneoffre).Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
              Sheets("Selection").Activate
              Range("E:" & ligneselect).Select
    Wend

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Visiblement tu aurais dû relire une 5ème fois
    D'où l'intérêt d'utiliser Option Explicit en début de module pour forcer la déclaration des variables. Au moins si tu écris mal une variable dans le code, il te dira qu'elle n'existe pas.
    Pour forcer la déclaration des variables : Menu Outils >> Options >> cocher "Déclaration des vaiables obligatoire"

    Citation Envoyé par BenoitL77 Voir le message

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Dim ligneoffre As Integer, ligneselec As Integer
    ligneoffre = 19
    ligneselec = 13
    
    'trier par N° de machine croissant
    Sheets("Selection").Activate
    ActiveWorkbook.Worksheets("Selection").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Selection").AutoFilter.Sort.SortFields.Add Key:= _
            Range("e12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Selection").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        
    'tester existance d'une machine
    Range("E13").Select
    If ActiveCell.Value = "" Then
        MsgBox ("Aucune machine selectionnée")
        Exit Sub
    End If
    
    While ActiveCell.Value <> "" 'tant qu'il y a une machine sélectionnée
                    'on copie les valeurs
               Worksheets("Offre client").Cells(ligneoffre, "b") = Worksheets("Selection").Cells(ligneselect, "e")
               Worksheets("Offre client").Cells(ligneoffre, "c") = Worksheets("Selection").Cells(ligneselect, "g")
               Worksheets("Offre client").Cells(ligneoffre, "e") = Worksheets("Selection").Cells(ligneselect, "n")
                                  
              ligneoffre = ligneoffre + 1  'incrémenter le N de ligne où copier la machine
              ligneselect = ligneselect + 1 'incrementer le N° de ligne de la machine
              
              Sheets("Offre client").Activate
              Rows(ligneoffre).Select
                Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromAbove
              Sheets("Selection").Activate
              Range("E:" & ligneselect).Select
    Wend

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2020
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2020
    Messages : 129
    Par défaut
    Bonjour Mat955

    Arf, je suis resté bloqué sur la syntaxe de ma ligne et je n'ai même pas pensé à vérifier les variables.
    J'apprends au moins ce que veux dire Option Explicit.
    Merci à toi
    Benoit

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

Discussions similaires

  1. Erreur sur fonction READ (Communication Série)
    Par Kartoon67 dans le forum LabVIEW
    Réponses: 11
    Dernier message: 22/04/2009, 13h40
  2. Erreur sur fonction d'extraction des mots
    Par Siguillaume dans le forum Langage
    Réponses: 16
    Dernier message: 11/06/2008, 10h16
  3. Erreur sur Fonction PL/SQL
    Par boudou dans le forum PL/SQL
    Réponses: 2
    Dernier message: 22/10/2007, 08h34
  4. [MySQL] Erreur sur fonction PHP
    Par lothar59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/03/2007, 11h31
  5. Erreur sur fonction
    Par all4linux dans le forum C
    Réponses: 2
    Dernier message: 30/06/2006, 10h40

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