Probléme macro qui prend mal en compte la permiere ligne [Résolu]

Signaler
Messages postés
53
Date d'inscription
jeudi 29 mars 2012
Statut
Membre
Dernière intervention
9 juin 2012
-
Messages postés
53
Date d'inscription
jeudi 29 mars 2012
Statut
Membre
Dernière intervention
9 juin 2012
-
Bonjour , le forum

J'ai un gros soucis sur une macro que j'ai réaliser , donc cette macro permet en fonction de la valeur dans la colonne AT de copier la ligne sur laquelle elle et positionner et de la coller en fonction du chiffre le de la colonne AT , cependant tout et nickel juste un problème au niveaux de la première ligne au lieu qu'elle copie les valeur elle me marque -1 pour les lignes suivantes tout et nickel je comprend pas pourquoi , j'ai bien tout verfier mais je trouve pas l'erreur , si quelqu’un pouvez m'aidez , merci .

Code :
Dim i As Long, Lenom As String
Dim deplace As String
Dim o, j As Integer ' Variables
Dim numligne As Integer ' variable numero ligne


o = 2 ' debut de la commande calcule a partir de la ligne 2

While IsEmpty(Range("Feuil1!A" & o)) = False 'commande pour calculer
numligne = Range("Feuil1!AT" & o).Value
j = o

For o = j + 1 To j + numligne - 1
Rows(j & ":" & j).Select
Application.CutCopyMode = False
Selection.Copy
Rows(o & ":" & o).Select
Selection.Insert Shift:=xlDown


Next o
Wend

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Non !
On ne le dira jamais assez : on ne travaille pas en activant, en sélectionnant, etc ... ! on travaille avec les objets de Excel, directement.
Exemples :
Sheets("Feuil1").Range("AT" & o) où o est un integer

Sheets("Feuil1").Rows(o).Insert xlShiftDown
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

Rappels de base :

Dim o, j As Integer
ne signifie pas que les deux variables seront des Integer.
Seule j le sera, o sera un Variant
Il faut (hélas) répété le As Integer pour chaque variable

Un Integer n'accepte des valeurs qu'entre -32768 et +32767

Plutôt que de jongler avec les chiffres associés à des chaines, mieux vaut utiliser les fonctions du langage :
Range("Feuil1!AT" & o).Value
peut agréablement être remplacé par
Range("Feuil1!AT1").Offset(o - 1, 0).Value

Bien choisir le nom de ses variables :
o, i ou l sont à bannir car trop ressemblant à des chiffres

L'utilisation de Select est à bannir dans les codes VBA car elle nécessite l'affichage de la feuille --> Si ta macro est longue et que, pendant ce temps, tu manipules la feuille ou autre, la fonction risque de sélecter quelque chose d'autre. Méfiance.
Rows(j & ":" & j).Select
Application.CutCopyMode = False
Selection.Copy
Rows(o & ":" & o).Select
Selection.Insert Shift:=xlDown 
à remplacer par quelque chose comme (à vérifier)
    Rows(o).Insert xlShiftDown
    Rows(o).Value = Rows(j).Value

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
53
Date d'inscription
jeudi 29 mars 2012
Statut
Membre
Dernière intervention
9 juin 2012

Salut , jack

Merci pour ta solution c'est excellent un grand merci , par contre j'aurais voulus faire fonctionnez la macro avec la feuille active j'ai remplacer Feuil1 par Activesheet mais ça ne fonctionne pas aurais tu une idée pour pouvoir faire cela .
Messages postés
34
Date d'inscription
jeudi 7 juin 2012
Statut
Membre
Dernière intervention
14 juin 2012
1
salut,
peut être que feuil1 n'est pas l'activesheet à ce moment.
active la feuil1 par prog

Lydie
Messages postés
53
Date d'inscription
jeudi 29 mars 2012
Statut
Membre
Dernière intervention
9 juin 2012

Salut ,

Si justement je m'assure quelle le soit mais sa ne fonctionne pas .
Messages postés
53
Date d'inscription
jeudi 29 mars 2012
Statut
Membre
Dernière intervention
9 juin 2012

Salut,

Merci pour la précision , donc je vais rester avec ma Feuil 1 , merci a tous le forum , bon weekend a vous