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 :

Type mismatch macro excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Par défaut Type mismatch macro excel
    bonjours,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Range("B$2:B$1048576") < 0.791666666666667 And Range("B$2:B$1048576").Value > 0.29 Or Range("C$2:C$1048576").Value < 6 Then
    WorksheetFunction.EntireRow.Delete
    End If
    je recois un type mismatch error et je ne sais pas pourquois.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Et qu'est ce que ce "code" est censé faire?

  3. #3
    Membre habitué
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Par défaut
    suprimer les ligne qui on une valeur entre 0.791666666666667 et 0.29 dans la colonne B ou supprimer la ligne si la valeur dans la colonne c est inférieur a 6

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    D'abord il faut faire une boucle sur toutes les cellules remplies de la colonne B et pour chaque cellule faire le test adéquat.

    Car par exemplesignifie que tu compare un tableau de 3 cellules à une valeur numérique

    En plus, où tu as déniché cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorksheetFunction.EntireRow.Delete
    Voilà, je vais te donner un petit coup de pouce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i as Long
     
    For i=300 To 2 Step -1
         If Range("B" & i).value > 0 Then Rows(i).Delete
    Next i
    Explication, Pour supprimer des lignes (ou ajouter) en utilisant la boucle For/Next il faut toujours commencer par le bas et remonter
    i est le compteur de ligne et le code teste si B300>0, ensuite B299...B2
    et il supprime la ligne i quand la condition est vérifiée

    Attention, Toutes les données de la colonne B doivent être des nombres (pour que l'inégalité du test soit correcte)

    Ensuite, pour trouver la dernière ligne remplie de la colonne B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim N as long
     
    N=Cells(Activesheet.rows.count,"B").End(xlup).Row
    Elle est nécessaire pour se limiter à la partie utile de la feuille

    Bon courage

  5. #5
    Membre habitué
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim i As Long
    Dim N As Long
    N = Cells(Activesheet.Rows.Count, "B").End(xlUp).Row
    For i = N to 2 Step -1
    If Range ("B" & i).Value >  0.7916666666667 And Range ("B" & i).Value < 0.29 _
    Or Range ("C" & i).Value < 6 Then Rows(i).Delete
    Next i
    Voila ce que j'ai réussi a faire, ca à lére de fonctionné mais j'ai 200000 lignes et le temps de calcule est énorme, y aurait il un autre moyen de speeder un peut le proccesus.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Revérifie ta condition en mettant éventuellement des parenthèse

    L'utilisation des variables tableaux dans ton cas sont souhaitables

    Teste ceci
    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 Traiter()
    Dim N As Long, i As Long, j As Long
    Dim N1 As Double, N2 As Double
    Dim Tb, Res()
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil1")
        N = .Cells(.Rows.Count, 2).End(xlUp).Row
        If N > 1 Then
            Tb = .Range("B2:C" & N)
            ReDim Res(1 To N - 1, 1 To 2)
            For i = 1 To N - 1
                N1 = Tb(i, 1)
                N2 = Tb(i, 2)
                If N1 > 0.7916666666667 And N1 < 0.29 Or N2 < 6 Then
                    j = j + 1
                    Res(j, 1) = N1
                    Res(j, 2) = N2
                End If
            Next i
     
            .Range("B2:C" & N) = Res
        End If
    End With
    End Sub

Discussions similaires

  1. Type Mismatch sur une cellule Excel contenant une formule
    Par _developpeur_ dans le forum VBA Access
    Réponses: 7
    Dernier message: 15/07/2011, 14h10
  2. Type mismatch sur une procédure de fermeture d'un fichier excel
    Par _developpeur_ dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/06/2011, 11h15
  3. débutant en VBA je n'arrive pas à finir ma macro excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2005, 12h20
  4. Porter une macro Excel vers OpenOffice
    Par totofweb dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 13/07/2004, 13h20
  5. [LG]Type mismatch
    Par néo333 dans le forum Langage
    Réponses: 6
    Dernier message: 04/11/2003, 22h13

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