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
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...
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
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 ?
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.
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 :
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.
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.
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")
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