fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 septembre 2009
-
20 sept. 2008 à 18:31
fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 septembre 2009
-
22 sept. 2008 à 05:56
J'ai des cases que j'ai nommées de M12HC à M80HC j'aimerai boucler sur ce tableau et de récupérer la valeur inscrite dans la case et de l'inscrire dans un autre tableau qui ce trouve sur une autre feuille que j'ai activée quand je lance cette manip. Jusqu'à maintenant je fais contrôle case par case
cela fonctionne, je pensais réduir le nombre de contrôle par une boucle mais je bute et ne comprend pas pourquoi !
J'ai un message erreur d'exécution 1004 erreur définie par l'application ou par l'objet sur la boucle ci-dessous
dim p as integer
For p = 12 To 80
Range("m" & p & "hc").value = ThisWorkbook.Sheets("feuille de calcul prix de vente").Range("m" & p & "h").value
Next p
shadowmosses
Messages postés14Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention16 décembre 2009 21 sept. 2008 à 21:53
Bonsoir Fne67, je voulais savoir si tu pouvais faire un Zip de ta feuille pour avoir une idee concrete de ton tableau et de la maniere dont tu a renomme tes cellules ?
La sincèrement sans ton tableau sous les yeux, je patauge ?
Si ton tableau comporte 4 lignes & 4 colonnes juxtaposees ont peux faire une boucle avec l'offset et deux variable n & b par exemple Et y insérer une condition .
Dim n, b, j As Variant
j = 0
n = 0
b = 0
While j = 0
Range("M12HC").Offset(n, b).Select
If Range("M12HC").Offset(n, b).Value <> "" Then
Range("M12HC").Offset(n, b).Value = _
ThisWorkbook.Sheets("feuille de calcul prix de vente").Range("M12HC").Offset(n, b).Value
End If
DblK
Messages postés51Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention 2 octobre 2008 20 sept. 2008 à 23:40
Bonjour,
Je suis pas sûr pour ton erreur mais dans une fonction "Range", il me semble qu'il faut mettre les ":".
Donc écrit plutôt quelque chose comme :
Range("m" & p & ":hc")
cela devrait marcher.
Ou alors utilise les "Cells".
shadowmosses
Messages postés14Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention16 décembre 2009 21 sept. 2008 à 00:39
Bonsoir Messieurs, je ne suis pas vraiment Ok avec dblk en ce qui concerne les « : »
Pour ma part je ferais :
ActiveSheet.Range("m" &p& "hc")
Tes cellules se nomme " MxxHC " avec les deux petits points cela reviendrais
a faire " Mxx:HC " et en ce qui concerne " Activesheet.range "
il m’est nécessaire pour le bon fonctionnement de mes codes , cela dépend de la version XLS.
Apres je ne suis qu’un débutant.
Sur ceux Messieurs, je vous souhaite a tous de très bonne programmation.
fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 septembre 2009 21 sept. 2008 à 06:49
Merci de vos réponses mais malheureusement cela ne fonctionne pas.
Le fait d'accoler << &p& >> donne une erreur de compilation
Le fait de mettre << : >> avant le h ou de remplacer "range" par "cells" donne la même erreur
Je continu mes efforts et espères trouver
Cool de de répondre encore merci
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?
DblK
Messages postés51Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention 2 octobre 2008 21 sept. 2008 à 11:32
Bonjour,
Après quelques test à mon Excel, j'ai résolu le problème de l'erreur 1004.
Le fait est que dans excel, enfin ma version, aucune cellule ne correspond à M12HC.
J'ai parlé des ":" car je pensais que tu voulais sélectionner plusieurs cellule d'un coup, mais à priori vu ta boucle, ce n'est pas ça.
Ainsi si je supprime HC dans ta boucle, le programme veut bien aller de M12 à M80.
Si ce n'est pas ça, merci de donner plus d'informations sur ce fameux "HC".
Pour moi il ne doit pas y être car les lettres sont utilisés pour les colonnes et les chiffres pour les lignes, alors dans M12HC il y a un problème et c'est d'ailleurs pourquoi la méthode RANGE plante et affiche l'erreur 1004.
shadowmosses
Messages postés14Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention16 décembre 2009 21 sept. 2008 à 12:03
Bonjour,
En faite fne67 a renommé toutes ses cellules
Au lieu d’avoir « A1 » il a maintenant « M12HC »
Mais en se qui concerne le fait d'accoler << &p& >> est une faute de frappe de ma part, désoler fne67 mais le problème demeure toujours.
J’ai renommé mes cellules et j’ai maintenant la même erreur que toi.
Et si tu te servais de l’offset de la cellule ?
For n = 0 To 68
ActiveSheet.Range("M12HC").Offset(n, 0).Value = ThisWorkbook.Sheets("feuille de calcul prix de vente").Range("M12HC").Offset(n, 0).Value
DoEvents
Next n
fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 septembre 2009 21 sept. 2008 à 19:49
Bonjour ,
avec ce code
For n = 0 To 68
ActiveSheet.Range("M12_HC").Offset(n, 0).Value =
ThisWorkbook.Sheets("feuille de calcul prix de
vente").Range("M12_H").Offset(n, 0).Value
DoEvents
Next n
cela fonctionne
en fait ce que je recherche à faire est une boucle sur un tableau de 4 ligne et de 4 colonne la case M12 étant le point de départ, je recherche les cases non vides et les inscrits dans la base de données ( H =haut dans la feuille de calcul (thisworkbook) et HC= haut de la feuille "base de données" ). car il faudra faire de même avec le coté droit"D" gauche"G" et bas "B" cela fait beaucoup de données à gérer de 12 jusqu'à 80 pour les 4 cotés d'un coffret. ce que j'ai fais et ça prend pas mal de ligne d'instruction alors je me suis lancé dans les boucles. Je pense que vous avez plus d'expérience dans ce domaine.
Merci de consacrer autant de temps pour mon problème.
a+
fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 septembre 2009 22 sept. 2008 à 05:56
Dim n, b, p As Variant
Sheets("Feuille de calcul").Select
Range("m12_hc:m80_gc").Select
Selection.ClearContents
p = 0
n = 0
b = 0
While p = 0
Range("M12_HC").Select
If Range("M12_HC").Offset(n, b).value = "" Then
Range("M12_HC").Offset(n, b).value = _
ThisWorkbook.Sheets("feuille de calcul prix de vente").Range("M12H").Offset(n, b).value
End If
DoEvents
n = n + 1
If n = 4 Then
n = 0
b = b + 1
End If
If b 4 Then p 1
Wend
Ecrit de cette façon ça marche très bien , merci beaucoup pour vos aides shadowmosses et Dblk
vraiement simpas d'avoir passé du temps pour mon problème
a+