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 :

comparer 2 nombre pour insérer des lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut comparer 2 nombre pour insérer des lignes
    Bonjour,

    La colonne A contient des chiffre de 1 à 300 et tous les chiffres ne sont pas présents
    et je voudrais rajouter des lignes pour de nouveaux chiifres
    par exemple si je veux rajouter le chiffre 63 je crée une ligne qui vient juste après le chiffre 60 ( car le 61 et 62 ne sont pas présents) donc il faut que je trouve le chiffre juste apres ou avant le 63
    le code est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for i = 1 to 300 
    if cells(i,1).value > 63 then rows(i).insert
    mais le probleme c'est qu'il m'insert plein de ligne ce qui et normal vu que plein de nombre sont supérieurs à 63 , il faut donc trouver le chiffre juste apre ou avant et je ne sais pas comment faire.

    Merci de m'aider car il n'y a pas qu'une seule ligne à créer.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Hello,

    Tu n'es pas loin de la solution, il faut juste lui dire de stopper après avoir trouvé le chiffre ou d'avoir inséré la ligne.

    Essaye comme 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
    Sub test()
    Dim i As Integer, x As Integer
     
    x = 63
     
    For i = 1 To 300
        If Cells(i, 1) = x Then
            MsgBox x & " existe déjà"
            Exit Sub
        End If
        If Cells(i, 1) > x Then
            Rows(i).Insert
            Cells(i, 1) = x
            Exit For
        End If
    Next i
     
    End Sub

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Il faut procéder autrement, pour gagner du temps dans la boucle...
    Même avec des milliers de lignes, on y parvient avec un maximum de 16 lectures, en agissant exactement de la même maniière qu'en cherchant dans un dictionnaire....

    1) on va au milieu
    si plus milieu plus grand, on va au milieu de la 1ère moitié
    si milieu plus petit, on va au milieu de la 2ème moitié
    2) et on recommence etc...
    16 lectures de cette sorte suffisent pour des milliers

    Edit :

    Preuve de ce raisonnement de milieux de moitiés :
    Ici on cherche tout et sur 100000

    (16 opérations suffisent pour 100000) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Command1_Click()
     toto = 100000
     avoirencore = toto
     nb = 0
     Do While avoirencore >= 2
       avoirencore = avoirencore / 2
       nb = nb + 1
     Loop
     MsgBox nb
    End Sub
    Exercez-vous à appliquer ...

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    je vais d'abord devoir aller acheter Excel 2007

    Merci pour l'astuce, je me la colle dans un coin

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    j'ai pas trop compris comment trouver 63 dans ta boucle, mais si je rajoute un 0 a toto, j'obtien nb = 19 et avec un 0 de plus, c'est 23. ce qui est peu, je te l'accorde, mais en contradiction avec ce que tu affirme.
    mais, je ne lance pas un concours hein , c'est pas de mon niveau ça
    Amicalement

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    B onsoir, alsimbad...

    Relis donc : 16 pour des milliers (en fait, même pour 100000).
    Citation Envoyé par ucfoutu Voir le message
    Même avec des milliers de lignes, on y parvient avec un maximum de 16 lectures,
    avec un zéro de plus, tu passes à des millions et avec 2 zéros de plus, à des dizaines de millions.... hein

    Dans tous les cas de figure, la différence entre les nombres maximum de lectures nécessaires est ..... sans commune mesure (23 lectures pour 10 millions ? ==>> de la rigolade par rapport à 10 millions de lectures "classiques" ...)

    Bonne nuit...

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

Discussions similaires

  1. Insérer des lignes copiées en nombre variable
    Par bomimi dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/01/2015, 11h03
  2. Réponses: 2
    Dernier message: 08/04/2010, 12h26
  3. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  4. boucle pour insérer des enregistrements
    Par roots_man dans le forum ASP
    Réponses: 7
    Dernier message: 05/10/2004, 09h28
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

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