walyddu59
Messages postés53Date d'inscriptionjeudi 29 mars 2012StatutMembreDernière intervention 9 juin 2012
-
7 juin 2012 à 08:44
walyddu59
Messages postés53Date d'inscriptionjeudi 29 mars 2012StatutMembreDernière intervention 9 juin 2012
-
9 juin 2012 à 11:06
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
A voir également:
Probléme macro qui prend mal en compte la permiere ligne
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 9 juin 2012 à 10:43
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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 juin 2012 à 17:22
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.
walyddu59
Messages postés53Date d'inscriptionjeudi 29 mars 2012StatutMembreDernière intervention 9 juin 2012 8 juin 2012 à 21:12
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 .