Problème de "zéro" lors fusion plusieurs cellules

Problème de "zéro" lors fusion plusieurs cellules - VB/VBA/VBS - Programmation

Marsh Posté le 14-05-2013 à 10:59:09    

Bonjour,
 
 
J'ai un soucis lorsque je souhaite accoler plusieurs cellules d'une même ligne.
Mon problème est le suivant; prenons un exemple:
 
Pour la ligne 1 fixée,en A1 j'ai : 26, en A2 j'ai B4, en A3 j'ai 026 et en A4 j'ai 001
 
 
Maintenant pour accoles les 4 cellules en 1 seule et unique en A5, j'utilise cette macro qui fonctionne mais qui me pose aussi un soucis:
 
Sheets("hhhhhh" ).Select
For p = 2 To 50
Range("E" & p).Select
ActiveCell.FormulaR1C1 = "=RC[-4]&RC[-3]&RC[-2]&RC[-1]"
next
 
end sub
 
Ca fonctionne sauf que ma cellule finale est : 26A2261
 
Il manque les zéros devant le 26 et les 2 zéros devant le 1....
 
Pour mettre les zéros dans mes macros précédentes pour chaque colonne je notais:
Sheets("hhhhhhh" ).Select
 Columns("D:F" ).Select
    Selection.NumberFormat = "000"
 
 
Mais celle ci ne semble pas être prise en compte lors de l'accolement...
 
Si quelqu'un pourrait m'aider ça serait vraiment génial car il ne me manque plus que ça pour finir ma macro !

Reply

Marsh Posté le 14-05-2013 à 10:59:09   

Reply

Marsh Posté le 14-05-2013 à 11:33:52    

J'ai un soucis encore plus grave je crois...
 
 
Ma toute dernière étape consiste à copier la colonne contenant la somme de cellules accolées vers une autre feuille.
 
Ma macro tiens en 1 ligne:
 
For a = 2 To 50
Worksheets("hhhhhhhh" ).Range("G" & a).Copy Worksheets("données" ).Range("A" & a)
 Next
 
 
mais ça me met dans ma colonne copiée :
=#REF!&#REF!&#REF!&#REF!&#REF!&#REF!
 
et ça pour toutes les lignes...
 
 
Pouvez vous m'aider s'il vous plait car j'y arrive vraiment pas et ça commence à me désespérer. Je débute sur VBA et j'arrive pas à trouver de l'inspiration pour débloquer le truc...

Reply

Marsh Posté le 14-05-2013 à 12:51:02    

 
           Bonjour.
 
           Pour le premier message, attention à l'exemple du contenu des cellules et du résultat, car s'il n'y a pas de logique entre
           (je ne vois pas comment obtenir ce résultat vu le contenu des cellules ‼),
           il ne faut pas alors s'étonner de ne pas obtenir de réponse …
 
           Quant au code, l'icône prévue à cet effet doit être utilisée !
 
           Je n'ai aucun souci avec votre code, les zéros sont bien conservés si les cellules sont en format texte …
 
           Pour des cellules en format numérique :

Code :
  1.     Worksheets("hhhhhh" ).Activate
  2.     Range("E2:E50" ).FormulaR1C1 = "=RC[-4]&RC[-3]&TEXT(RC[-2],""000"" )&TEXT(RC[-1],""000"" )"

           Au passage, plus il y a de  Select  dans un code plus l'exécution est lente, à proscrire donc !
 
 
           Quant au second message, c'est normal vu la copie de formules au lieu de valeurs …          
           Est-il obligatoire d'avoir une formule, la valeur seule ne suffirait-elle pas ?
 
           Dans le cas d'une formule, il faut la recréer et non pas la copier.
           Sinon pour la valeur, voir l'aide de la méthode  PasteSpecial  appliquée à un objet Range

Message cité 1 fois
Message édité par Marc L le 14-05-2013 à 13:20:23
Reply

Marsh Posté le 14-05-2013 à 13:28:01    

Bonjour Marc L
 
Merci beaucoup pour votre réponse ! J'ai essayé et ça marche bien en effet ! Je ne savais pas qu'il était possible de mettre un code en format texte ...je n'y aurais jamais pensé !  
Je débute aussi et cela est vrai que ce n'est jamais évident.
 
En tout cas merci encore de votre réponse ! Il me reste à "décrypter" votre seconde partie de réponse mais je vais y arriver.
 
 
Bon après midi  
 

Reply

Marsh Posté le 14-05-2013 à 13:53:50    

J'ai trouvé sur le net un problème similaire au mieux où la personne voulait appliquer PasteSpecial mais lorsque je l'applique je rencontre le même problème que précédemment...c'est à dire
A1 = =#REF!&TEXTE(#REF!;"00" )&#REF!&TEXTE(#REF!;"00" )&TEXTE(#REF!;"000" )&TEXTE(#REF!;"000" )
 
et cela pour toutes les lignes  
 
Je voudrais juste copier les valeurs en effet si possible.
 
Ma macro est :
For x = 2 To 50
Sheets("" ).Range("E" & x).Copy
Sheets("données" ).Range("A" & x).PasteSpecial Paste:=xlPasteAll
Next
 
merci si vous pouviez une dernièrement fois m'aider !

Reply

Marsh Posté le 14-05-2013 à 14:28:09    

C'est bon j'ai trouvé ! :D
 
Merci en tout cas de votre aide Marc L !

Reply

Marsh Posté le 14-05-2013 à 14:34:48    

 
           Bien !
 
           Au fait, comme dans mon exemple précédent, pas besoin de boucle, la plage peut être copiée puis collée en une seule fois …
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed