Insérer une ligne à une position i variable

Résolu/Fermé
Elooowdie Messages postés 4 Date d'inscription jeudi 12 septembre 2013 Statut Membre Dernière intervention 12 septembre 2013 - 12 sept. 2013 à 12:00
Elooowdie Messages postés 4 Date d'inscription jeudi 12 septembre 2013 Statut Membre Dernière intervention 12 septembre 2013 - 12 sept. 2013 à 13:41
Bonjour,

Je cherche depuis déjà un bon petit bout de temps sur le forum, mais je n'ai rien vu qui pourrait correspondre à ce que je cherche à faire...
En fait, j'ai un tableau avec comme colonnes 3 entrées différentes et comme lignes les différents modèles existants répertoriés shématisé ci-dessous :

nom(colonne B) | type(colonne C) | fonctionnement(colonne D)
_____________________________________________________
1 | a | A
2 | a | A
3 | a | A
4 | b | A
5 | b | A
6 | b | A
7 | c | B

Je souhaiterais avoir la possibilité de pouvoir ajouter à l'aide de différents boutons une ligne pour un modèle de type a et de fonctionnement A, un modèle de type b et de fonctionnement A et un modèle de type c de fonctionnement B. J'ai pour l'instant commencé mon programme pour le premier cas (ajout modèle de type a fonctionnement A) en souhaitant insérer une nouvelle ligne entre (pour l'exemple) les modèles 3 et 4 (après le dernier type a et avant le premier type b).

Cependant, je souhaiterais que pour CHAQUE ajout de ligne, la nouvelle ligne vienne se placer entre le dernier modèle de type a et le premier de type b. J'ai donc défini une variable i, mais cette dernière reprend sa valeur initiale dès que je relance le module, alors que je voudrais qu'elle prenne la valeur "i = i + 1".

Voila... je ne sais pas si j'ai été suffisemment claire... Je vous met en copie les lignes de programmation que j'ai réalisé...

Merci d'avance !
Elodie



'--------------------------------------------------------------------------
'NouveauTypeMoteurEssence Macro
'--------------------------------------------------------------------------

Sub NouveauTypeMoteurEssence()

'Déclaration de la variable i représentant le numéro de ligne
Dim i As Byte
i = 23

'Ajout de la nouvelle ligne
Range("B" & i & ":D" & i).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C" & i - 1 & ":D" & i - 1).Select
Selection.AutoFill Destination:=Range("C" & i - 1 & ":D" & i), Type:=xlFillDefault
Range("C" & i - 1 & ":D" & i).Select
Range("B" & i).Select

i = i + 1
End Sub


A voir également:

3 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 sept. 2013 à 12:25
Bonjour,

Réponse courte à question longue.
Je crois qu'il suffit que tu récupères systématiquement la ligne où se trouve le premier "b". Non ?

A+
0
Elooowdie Messages postés 4 Date d'inscription jeudi 12 septembre 2013 Statut Membre Dernière intervention 12 septembre 2013
12 sept. 2013 à 12:49
et comment on fait ça ?
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 sept. 2013 à 13:11
ligne=1
While Cells(ligne,3).Value <> "b"
ligne=ligne+1
Wend
0
Elooowdie Messages postés 4 Date d'inscription jeudi 12 septembre 2013 Statut Membre Dernière intervention 12 septembre 2013
12 sept. 2013 à 13:25
Merci !!! C'est exactement ça qui me fallait !!!
Merci beaucoupbeaucoupbeaucoup =)
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 sept. 2013 à 13:30
De rien, j'adore ton prénom.
0
Elooowdie Messages postés 4 Date d'inscription jeudi 12 septembre 2013 Statut Membre Dernière intervention 12 septembre 2013
12 sept. 2013 à 13:41
Euuuh... Merci ?
0