Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insertion VBA

12 réponses
Avatar
Manu
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de dialogue
me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu

10 réponses

1 2
Avatar
Daniel.C
Bonjour.

Sub test4()
Dim Rep, Ligne
Rep = "a"
Do While Not IsNumeric(Rep)
Rep = InputBox("Entrez un nombre")
Loop
Ligne = Application.Match(CInt(Rep), [A:A], 0)
If IsNumeric(Ligne) Then
Rows(Ligne + 1).Insert
End If
End Sub

Cordialement.
Daniel

Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de dialogue
me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il l'aura
trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu


Avatar
Manu
Super, et Merci Daniel ca fonctionne tres bien, cepandant, je souhaiterais
que ma selection (la surbrillance) reste sur la ligne qui vient de s'inserer
exemple :
si je repond à la boite de dialogue : 15 et que cette case 15 sur touve en
A32 alors il y aura une ligne vide en dessous alors je voudrais que ma
selection reste sur la ligne 33.

Merci encore

Manu


"Daniel.C" a écrit dans le message de news:
%
Bonjour.

Sub test4()
Dim Rep, Ligne
Rep = "a"
Do While Not IsNumeric(Rep)
Rep = InputBox("Entrez un nombre")
Loop
Ligne = Application.Match(CInt(Rep), [A:A], 0)
If IsNumeric(Ligne) Then
Rows(Ligne + 1).Insert
End If
End Sub

Cordialement.
Daniel

Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu






Avatar
LSteph
Bonjour,

tu dis bien comporte et non est égal à...

Sub cInserCherche()
Dim i As Integer, myStr As String
myStr = InputBox("chercher :", "Insérer sous la première occurence", _
"15")
Application.ScreenUpdating = False
With [a1:a100]
For i = .Cells.Count To 1 Step -1
If CStr(.Cells(i)) Like "*" & myStr & "*" Then
.Cells(i).Offset(1).Rows.Insert
End If
Next
End With
End Sub

'lSteph

Manu a écrit :
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de dialogue
me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu




Avatar
LSteph
..donc comporte mais pour toutes occurences
(mon code comportait une scorie d'un premier jet)

Sub cInserCherche()
Dim i As Integer, myStr As String
myStr = InputBox("chercher :", "Insérer à chaque occurence","15")
Application.ScreenUpdating = False
With [a1:a100]
For i = .Cells.Count To 1 Step -1
If CStr(.Cells(i)) Like "*" & myStr & "*" Then
.Cells(i).Offset(1).Rows.Insert
End If
Next
End With
End Sub

'lSteph

Manu a écrit :
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de dialogue
me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu




Avatar
Daniel.C
Sub test()
Dim Rep, Ligne
Rep = "a"
Do While Not IsNumeric(Rep)
Rep = InputBox("Entrez un nombre")
Loop
Ligne = Application.Match(CInt(Rep), [A:A], 0)
If IsNumeric(Ligne) Then
Rows(Ligne + 1).Insert
Rows(Ligne + 1).Select
End If
End Sub

Daniel

Super, et Merci Daniel ca fonctionne tres bien, cepandant, je souhaiterais
que ma selection (la surbrillance) reste sur la ligne qui vient de s'inserer
exemple :
si je repond à la boite de dialogue : 15 et que cette case 15 sur touve en
A32 alors il y aura une ligne vide en dessous alors je voudrais que ma
selection reste sur la ligne 33.

Merci encore

Manu


"Daniel.C" a écrit dans le message de news:
%
Bonjour.

Sub test4()
Dim Rep, Ligne
Rep = "a"
Do While Not IsNumeric(Rep)
Rep = InputBox("Entrez un nombre")
Loop
Ligne = Application.Match(CInt(Rep), [A:A], 0)
If IsNumeric(Ligne) Then
Rows(Ligne + 1).Insert
End If
End Sub

Cordialement.
Daniel

Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu








Avatar
Manu
Effectivement, j'ai dis comporte et c'est une erreur, il faut que ce soit
egal au chiffre taper, mais ca ne change rien pour moi, car dans cette
colonne A, il n'y aura toujours que des nombres entiers de 1 à X.
Mais ce que je souhaite surtout c'est de laisser la selection sur la ligne
inserer, car sur cette nouvelle ligne, je dois ensuite la grouper toujours
au sein de la macro (mais ca je pense paut etre y arriver) puis lui faire de
la mise en forme.
C'est pour cela qu'il est important que cette ligne reste en surbrillance,
et ca me permet egalement de la trouver rapidement.
alors, evidemment j'ai essayé à la fin de la macro select rows ou ce genre
de chose, mais ca ne fonctionne evidemment pas

Merci

"LSteph" a écrit dans le message de news:
e$
..donc comporte mais pour toutes occurences
(mon code comportait une scorie d'un premier jet)

Sub cInserCherche()
Dim i As Integer, myStr As String
myStr = InputBox("chercher :", "Insérer à chaque occurence","15")
Application.ScreenUpdating = False
With [a1:a100]
For i = .Cells.Count To 1 Step -1
If CStr(.Cells(i)) Like "*" & myStr & "*" Then
.Cells(i).Offset(1).Rows.Insert
End If
Next
End With
End Sub

'lSteph

Manu a écrit :
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu




Avatar
Manu
Genial Daniel, c'est exactement ce que je souhaitais merci à vous 2, mais
j'abuserais bien en vous demandant encore davantage. Je pose toujours la
question :

Je reprend l'exemple : si je demande le 15 et que 15 ce trouve en A2 alors
il m'insere une ligne en 3, c'est impec si je n'ai pas de cellules vides en
dessous mais ce que je voudrais en plus, c'est que si il y en dessous de A2
des cellules vides, alors je souhaiterais qu'il m'insere cette ligne en
dessous de ces cellules vides

exemple :
A
1 21
2 15
3
4
5 39
6
7 8
8
9 17

Si je demande à la boite de dialogue le nombre 15 alors il faudra qu'il me
l'insere juste au dessus de 39.
Si je demande 8 alors il devrais me l'inserer au dessus de 17

Je sais, j'abuse d'ailleurs, je ne sais meme pas si c'est faisable...

Merci

Manu


Daniel.C" a écrit dans le message de news:

Sub test()
Dim Rep, Ligne
Rep = "a"
Do While Not IsNumeric(Rep)
Rep = InputBox("Entrez un nombre")
Loop
Ligne = Application.Match(CInt(Rep), [A:A], 0)
If IsNumeric(Ligne) Then
Rows(Ligne + 1).Insert
Rows(Ligne + 1).Select
End If
End Sub

Daniel

Super, et Merci Daniel ca fonctionne tres bien, cepandant, je
souhaiterais que ma selection (la surbrillance) reste sur la ligne qui
vient de s'inserer
exemple :
si je repond à la boite de dialogue : 15 et que cette case 15 sur touve
en A32 alors il y aura une ligne vide en dessous alors je voudrais que ma
selection reste sur la ligne 33.

Merci encore

Manu


"Daniel.C" a écrit dans le message de news:
%
Bonjour.

Sub test4()
Dim Rep, Ligne
Rep = "a"
Do While Not IsNumeric(Rep)
Rep = InputBox("Entrez un nombre")
Loop
Ligne = Application.Match(CInt(Rep), [A:A], 0)
If IsNumeric(Ligne) Then
Rows(Ligne + 1).Insert
End If
End Sub

Cordialement.
Daniel

Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je
souhaiterais qu'il cherche la cellule dans la colonne A qui comporte 15
et quand il l'aura trouvé, qu'il m'insere une ligne en dessous de
celle-ci.
Merci pour toutes aides.

Manu












Avatar
LSteph
[a:a].Find(What:=InputBox("Chercher", "Inserer une ligne après",
15)).Offset(1).EntireRow.Insert

--
lSteph

Manu a écrit :
Effectivement, j'ai dis comporte et c'est une erreur, il faut que ce soit
egal au chiffre taper, mais ca ne change rien pour moi, car dans cette
colonne A, il n'y aura toujours que des nombres entiers de 1 à X.
Mais ce que je souhaite surtout c'est de laisser la selection sur la ligne
inserer, car sur cette nouvelle ligne, je dois ensuite la grouper toujours
au sein de la macro (mais ca je pense paut etre y arriver) puis lui faire de
la mise en forme.
C'est pour cela qu'il est important que cette ligne reste en surbrillance,
et ca me permet egalement de la trouver rapidement.
alors, evidemment j'ai essayé à la fin de la macro select rows ou ce genre
de chose, mais ca ne fonctionne evidemment pas

Merci

"LSteph" a écrit dans le message de news:
e$
..donc comporte mais pour toutes occurences
(mon code comportait une scorie d'un premier jet)

Sub cInserCherche()
Dim i As Integer, myStr As String
myStr = InputBox("chercher :", "Insérer à chaque occurence","15")
Application.ScreenUpdating = False
With [a1:a100]
For i = .Cells.Count To 1 Step -1
If CStr(.Cells(i)) Like "*" & myStr & "*" Then
.Cells(i).Offset(1).Rows.Insert
End If
Next
End With
End Sub

'lSteph

Manu a écrit :
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu








Avatar
michdenis
Quand tu utilises la méthode Find (voir l'aide d'excel sur le sujet)
sans certains paramètres, tu rends l'exécution du code aléatoire.
Et quand pour une raison ou une autre le code se plante, l'usager
peut passer beaucoup de temps à tenter d'en découvrir la source.

Un copier-coller de la remarque de l'aide d'Excel :
'------------------------------
Les paramètres des arguments RechercherDans, Regarder, OrdreRecherche et
RespecterNbreOctets sont enregistrés chaque fois que vous utilisez cette méthode. Si vous
ne spécifiez aucune valeur pour ces arguments lors du prochain appel à la méthode, les
valeurs enregistrées sont utilisées. Le fait de définir ces arguments modifie les
paramètres de la boîte de dialogue Rechercher, ce qui a pour effet de changer les
paramètres enregistrés qui sont utilisés lorsque vous ne spécifiez pas les arguments. Pour
éviter toute ambiguïté, définissez ces arguments explicitement chaque fois que vous
utilisez cette méthode.
'------------------------------
Promis, je n'interviens plus sur tes messages aujourd'hui.
;-)



"LSteph" a écrit dans le message de groupe de discussion :

[a:a].Find(What:=InputBox("Chercher", "Inserer une ligne après",
15)).Offset(1).EntireRow.Insert

--
lSteph

Manu a écrit :
Effectivement, j'ai dis comporte et c'est une erreur, il faut que ce soit
egal au chiffre taper, mais ca ne change rien pour moi, car dans cette
colonne A, il n'y aura toujours que des nombres entiers de 1 à X.
Mais ce que je souhaite surtout c'est de laisser la selection sur la ligne
inserer, car sur cette nouvelle ligne, je dois ensuite la grouper toujours
au sein de la macro (mais ca je pense paut etre y arriver) puis lui faire de
la mise en forme.
C'est pour cela qu'il est important que cette ligne reste en surbrillance,
et ca me permet egalement de la trouver rapidement.
alors, evidemment j'ai essayé à la fin de la macro select rows ou ce genre
de chose, mais ca ne fonctionne evidemment pas

Merci

"LSteph" a écrit dans le message de news:
e$
..donc comporte mais pour toutes occurences
(mon code comportait une scorie d'un premier jet)

Sub cInserCherche()
Dim i As Integer, myStr As String
myStr = InputBox("chercher :", "Insérer à chaque occurence","15")
Application.ScreenUpdating = False
With [a1:a100]
For i = .Cells.Count To 1 Step -1
If CStr(.Cells(i)) Like "*" & myStr & "*" Then
.Cells(i).Offset(1).Rows.Insert
End If
Next
End With
End Sub

'lSteph

Manu a écrit :
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu








Avatar
LSteph
Si , si ne te prives pas, d'ailleurs je t'invite à retourner sur l'autre
fil, cela va t'intéresser.

Pour find je suis d'accord ...là j'ai un peu trop simplifié!

;-)

valeurs ou formules ou autres cela peut avoir été l'objet d'une
recherche précédente
Mais avec un minimum ,d'un ou deux paramêtres de plus cela passera dans
toutes les versions

@+

michdenis a écrit :
Quand tu utilises la méthode Find (voir l'aide d'excel sur le sujet)
sans certains paramètres, tu rends l'exécution du code aléatoire.
Et quand pour une raison ou une autre le code se plante, l'usager
peut passer beaucoup de temps à tenter d'en découvrir la source.

Un copier-coller de la remarque de l'aide d'Excel :
'------------------------------
Les paramètres des arguments RechercherDans, Regarder, OrdreRecherche et
RespecterNbreOctets sont enregistrés chaque fois que vous utilisez cette méthode. Si vous
ne spécifiez aucune valeur pour ces arguments lors du prochain appel à la méthode, les
valeurs enregistrées sont utilisées. Le fait de définir ces arguments modifie les
paramètres de la boîte de dialogue Rechercher, ce qui a pour effet de changer les
paramètres enregistrés qui sont utilisés lorsque vous ne spécifiez pas les arguments. Pour
éviter toute ambiguïté, définissez ces arguments explicitement chaque fois que vous
utilisez cette méthode.
'------------------------------
Promis, je n'interviens plus sur tes messages aujourd'hui.
;-)



"LSteph" a écrit dans le message de groupe de discussion :

[a:a].Find(What:=InputBox("Chercher", "Inserer une ligne après",
15)).Offset(1).EntireRow.Insert

--
lSteph

Manu a écrit :
Effectivement, j'ai dis comporte et c'est une erreur, il faut que ce soit
egal au chiffre taper, mais ca ne change rien pour moi, car dans cette
colonne A, il n'y aura toujours que des nombres entiers de 1 à X.
Mais ce que je souhaite surtout c'est de laisser la selection sur la ligne
inserer, car sur cette nouvelle ligne, je dois ensuite la grouper toujours
au sein de la macro (mais ca je pense paut etre y arriver) puis lui faire de
la mise en forme.
C'est pour cela qu'il est important que cette ligne reste en surbrillance,
et ca me permet egalement de la trouver rapidement.
alors, evidemment j'ai essayé à la fin de la macro select rows ou ce genre
de chose, mais ca ne fonctionne evidemment pas

Merci

"LSteph" a écrit dans le message de news:
e$
..donc comporte mais pour toutes occurences
(mon code comportait une scorie d'un premier jet)

Sub cInserCherche()
Dim i As Integer, myStr As String
myStr = InputBox("chercher :", "Insérer à chaque occurence","15")
Application.ScreenUpdating = False
With [a1:a100]
For i = .Cells.Count To 1 Step -1
If CStr(.Cells(i)) Like "*" & myStr & "*" Then
.Cells(i).Offset(1).Rows.Insert
End If
Next
End With
End Sub

'lSteph

Manu a écrit :
Bonjour,

Je vais tacher d'etre clair,
J'ai dans la colonne A des nombre de 1 à ......
Je souhaiterais inserer une ligne en dessous du N° qu'une boite de
dialogue me demanderais
Exemple :
Quand la boite me poseras la question et si je repond 15, je souhaiterais
qu'il cherche la cellule dans la colonne A qui comporte 15 et quand il
l'aura trouvé, qu'il m'insere une ligne en dessous de celle-ci.
Merci pour toutes aides.

Manu









1 2