Insérer un nombre selon sa valeur sur une ligne

zephir94

XLDnaute Impliqué
Bonsoir à tous,

Je suis en manque d'inspiration Vba, j'ai une ligne dans une plage rectangulaire nommée qui comporte des numéros.
Par exemple 5, 5.1, 5.2.....5.8, 6
Je voudrais y insérer le nombre 5.9 entre 5.8 et 6 comment peut on faire cela en vba ?
Je vous remercie par avance
 

sourcier08

XLDnaute Occasionnel
Re : Insérer un nombre selon sa valeur sur une ligne

Bonjour zephir94,

Peut-être avec une macro de ce genre :

Code:
Sub insert_ligne()
Dim resultat As String
    
resultat = InputBox("Insérer une ligne avant l'objet :", "Insertion de ligne")

Range("A1:A50").Find(what:=resultat, lookat:=xlWhole).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    
End Sub

En donnant "6" dans la boite de dialogue, tu insères une ligne avant le point 6, dans une plage de A1 à A50.




[Edit] Oups, faut insérer le chiffre. Je réfléchis... :)
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Insérer un nombre selon sa valeur sur une ligne

je te remercie, en fait je dois insérer une colonne qui comporte un numéro entre les colonnes déjà existante en les classant

j'ai un userform ou tu rentres un text et des références et le fameux nombre qui doit se classer avec sa colonne.
Voici mon code :
Code:
 Dim i As Long
Dim test As String
Dim x As Range
 
 If OptionButton1.Value = True Then
Sheets("synoptique").Activate
val1 = TextBox1.Text
val2 = TextBox2.Text
val3 = TextBox3.Text
val4 = TextBox4.Text

    Range("zone1").Columns(8).EntireColumn.Insert
   Range("zone1").Range("H5").FormulaR1C1 = val1
   Range("zone1").Range("H4") = val4
   Range("zone1").Range("H2") = val2
   Range("zone1").Range("H1") = val3
With ActiveCell.Characters(Start:=1, Length:=20).Font
       .Name = "Arial"
         .FontStyle = "Normal"
        .Size = 11
      .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
       .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
   Range("M7").Select
    Range("M7").AddComment
    Range("M7").Comment.Visible = False
   Range("M7").Comment.Text Text:=val1 & Chr(10) & ""
Selection.HorizontalAlignment = xlLeft
    With Range("M7").Comment.Shape
        .TextFrame.Characters.Font.Bold = True 'Ecriture gras
        .OLEFormat.Object.Font.Name = "Arial" 'Type de police
    .TextFrame.HorizontalAlignment = xlCenter
    End With
  If UserForm5.OptionButton1.Value = True Then
ThisWorkbook.Sheets("synoptique").Range("heurer").Copy Destination:=ThisWorkbook.Sheets("synoptique").Range("heure")
Else
  End If
    Unload Me
    
    If UserForm5.OptionButton2.Value = True Then
ThisWorkbook.Sheets("synoptique").Range("heureg").Copy Destination:=ThisWorkbook.Sheets("synoptique").Range("heure")
Else
   End If

Pour l'instant je l'insère en colonne 8 de ma plage zone1 mais je voudrais que celle-ci soit entre la colonne 6.1 et si 6.3 si elle est à 6.2
Code:
val4 = TextBox4.Text

me permet de rentrer le nombre de la colonne
Te remerciant
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Insérer un nombre selon sa valeur sur une ligne

Je pense qu'une boucle peut être pour vérifier si le numéro n'existe pas déjà d'une part devrait être obligatoire et sûrement trouver la valeur supérieur à ce nombre et coller ma colonne ?
 

sourcier08

XLDnaute Occasionnel
Re : Insérer un nombre selon sa valeur sur une ligne

Bien entendu qu'il faut un contrôle mais là, sans le fichier sous les yeux, j'ai du mal à m'y retrouver. Et curieusement, le remplacement de virgule ne fonctionne pas dans ma macro. Alors qu'avec l'enregistreur, tout va bien.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Insérer un nombre selon sa valeur sur une ligne

Bonsoir zephir94, sourcier08,

Il faudrait préciser les points suivants :

- s'agit-il toujours de la même ligne du tableau, la n° 1 par exemple ?

- la série est-elle constituée de nombres ou de textes comme le suggère le point ?

- le pas doit-il toujours être de 0,1 ?

A+
 

zephir94

XLDnaute Impliqué
Re : Insérer un nombre selon sa valeur sur une ligne

Bonsoir la ligne est une plage nommée physiquement elle est en ligne6 et elle ne bouge pas
La colonne sera toujours construite avec les mêmes informations, et les numéros sont aléatoires au choix de l'utilisateur
je te fais un screen :



le nombres sont dans la zone
 

Pièces jointes

  • colonne.jpg
    colonne.jpg
    31.5 KB · Affichages: 26
Dernière édition:

sourcier08

XLDnaute Occasionnel
Re : Insérer un nombre selon sa valeur sur une ligne

Pas forcément une boucle.
Une simple recherche avec range(?????).find(what:=textbox4, LookAt:=xlWhole) devrait suffire mais il faut savoir sur quelle ligne ça se trouve même si la logique peut nous orienter sur la ligne 1 comme le suggère job75.

Ensuite, on va devoir reprendre la valeur de la textbox4 pour ajouter ou retirer 0,1 et changer la virgule présente dans le résultat par un point car tu fonctionnes avec des "."


S'il est possible de fournir un fichier(sans données sensibles) avec des explications bien précises sur le résultat final souhaité nous aidera beaucoup, et toi aussi par la même.
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Insérer un nombre selon sa valeur sur une ligne

la valeur de la textbox4 est à la diligence de celui qui va la saisir et ne s'incrémente pas de 0.1 en 0.1 ! ce que je veux arriver à faire c'est classer la nouvelle colonne, si 5.5
existe et 6 si il rentre 5.6 je voudrais que la colonne aille entre les deux valeurs.
 

zephir94

XLDnaute Impliqué
Re : Insérer un nombre selon sa valeur sur une ligne

j'ai déjà essayé cela, si la valeur existe pas de soucis, par contre si elle n'existe pas la c'est le drame ! j'ai une erreure du genre : erreur d'exécution 91, variable Object ou variable de bloc with non définie

Code:
If Range("sap1").Find(what:=TextBox4, LookAt:=xlWhole) Then
 MsgBox " trouvé"
 Exit Sub
 Else
 MsgBox "plouf pas trouvé"

Donc j'en suis venu à la conclusion que la fonction find ne va pas m'aider beaucoup hélas
Car ma première idée était de déclarer une variable du range trouvé et m'en servir pour incérer ma nouvelle colonne, un peu du genre range("i-1")
 
Dernière édition:

sourcier08

XLDnaute Occasionnel
Re : Insérer un nombre selon sa valeur sur une ligne

Pour les erreurs, certaines sont dûes au fait qu'il ne trouve pas la valeur recherchée, dans ce cas, tu peux passer par la gestion des erreurs tout simplement.

ex :


sub macro()
dim.......

On Error GoTo Fin

Ici, ta macro

Fin:
If Err.Number = 91 Then MsgBox "La recherche n'a pas aboutie !"
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1