jeandos Aide Multimedia : bean, 1 utilisateur anonyme et 30 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

condition dans une macro excel

 
n°375839
sadicla
Profil : Inconnu(e)
Posté le 15-09-2007 à 18:47:19  profilanswer
 

Bonjour
 
J'ai une macro qui ressemble à ça :
Sub recopie()
'
' recopie Macro
'
    Range("G3:G359" ).Select
    Selection.Copy
    Range("B3" ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B4" ).Select
End Sub
 
Je voudrais insérer une condition qui n'exécuterait pas cette macro dans les cellules non vides
Quelqu'un peut-il m'aider et m'écrire le complément ?
Merci

mood
Publicité
Posté le 15-09-2007 à 18:47:19  profilanswer
 

n°375842
sadicla
Profil : Inconnu(e)
Posté le 16-09-2007 à 00:21:20  profilanswer
 

Rebonjour
 
Après réflexion, je reformule ma question différemment
J'ai une formule dans colonne H  :=SI(A3="";"";RECHERCHEV(A3;descro;2;0)) qui récupère le résultat , et après, une macro me copie le contenu de cette cellule H ( " collage spéciale -valeur - " ), dans B,  afin que je puisse modifier éventuellement le texte .  
Problème : comme je saute une ligne lorsque je saisis mes différents code d'appel, si j'écris un titre dans ces cellules vides , ma macro m'efface au moment de la copie mon titre . Comment puis je éviter ça ?  
Quelqu'un aurait-il une idée ? Ce petit programme doit me servir pour la saisie de devis dans le cadre de mon boulot .  
Je dois dire , qu'avec le peu de connaissance en excel que j'ai, je rame depuis quelques semaines maintenant !!
Merci d'avance au pro d'excel .

n°375844
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 16-09-2007 à 08:16:05  profilanswer
 

:o  hier soir j'étais sur une base de reflexion  

Spoiler :


Sub copiechacha()
 
 For Each toto In Worksheets("chacha" ).Range("G3:G359" ).Cells
        If toto <> "" Then Selection = toto
        Selection.Copy
    Range("j3" ).Select  ' rajouter  une boucle ou un test, ou mettre en variable pour  déplacer cette cible)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
         Next
       
     End Sub


et la ça a changé ce matin   :sweat:


---------------
grrrr
 
n°375845
sadicla
Profil : Inconnu(e)
Posté le 16-09-2007 à 09:06:44  profilanswer
 

Bonjour,
Excuse moi de te faire réfléchir pour rien,  mais les 2 questions sont liées . Je tourne toujours autour du même problème, sans doute facile à résoudre pour celui qui maitrise : Feuille 1 = Données texte  / Feuille 2 = document dans lequel je veux importer ces textes à l'aide d'un petit code ( genre plafv ) et que je pourrais modifier ou compléter directement dans le document . Je sais une base de données avec des tables et puis tout ça va bien mais je n'y arrive pas

n°375847
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 16-09-2007 à 09:33:24  profilanswer
 


 :hello:  
   Si tes données  sont rangées en base de donnée  avec un champ clé  en premiere colone .(  la gestion d'une base de donnée demande de la rigueur donc il n'est pas question de trouver  des vides  entre enregistrements  dans une ligne   sans quoi la gestion devient un sac de noeud avec des routines dans tous les sens pour  trouver qui est quoi ...)  a partir  de la  il faut  faire une macro  simple  du genre  
1/ chercher le  champ clé  
2/ selectionner  une zone   définie et fixe comportants les champs descriptions .
3/ copier cette zone
4/ coller cette zone dans ta  feuille de destination a l'adresse  désirée.
 
"plafv"   c'est quoi ??  
 


---------------
grrrr
 
n°375848
sadicla
Profil : Inconnu(e)
Posté le 16-09-2007 à 10:10:40  profilanswer
 

chacha a écrit :

:hello:  
   Si tes données  sont rangées en base de donnée  avec un champ clé  en premiere colone .(  la gestion d'une base de donnée demande de la rigueur donc il n'est pas question de trouver  des vides  entre enregistrements  dans une ligne   sans quoi la gestion devient un sac de noeud avec des routines dans tous les sens pour  trouver qui est quoi ...)  a partir  de la  il faut  faire une macro  simple  du genre  
1/ chercher le  champ clé  
2/ selectionner  une zone   définie et fixe comportants les champs descriptions .
3/ copier cette zone
4/ coller cette zone dans ta  feuille de destination a l'adresse  désirée.
 
"plafv"   c'est quoi ??


 
Salut Chacha
plafv est le code qui correspond à un descriptif :  
PLAFOND PEINT
- Préparations des supports
- 2 couches de peinture vinylique
 
comme plafpp correspond à :
PLAFOND EN PAPIER PEINT
- Préparations des supports
- Fourniture et pose de papier peint
 
Désolé si je bute, mais mes données ( codes et descriptifs ) sont simplement dans la feuille 1 saisis dans la colonne "A" pour les codes, et dans la colonne "B" pour les descriptifs .

n°375849
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 16-09-2007 à 10:43:55  profilanswer
 

Bon ça c'est vos salades  de codifications internes ! je croyais qu'il s'agissait d'une commande excel VBA que je ne connaissais pas  :sweat:   ...
 Pour le reste je ne peux pas faire grand chose pour toi . Je penses tu as les éléments  de raisonnement pour bosser  ta macro  la me semble t'il... pour  la corriger et t'aider je peux  mais  ne connaissant pas ta base de raisonnement et  ne visualisant pas la feuille  données je me vois mal ecrire la macro a ta place !!!( surtout pour application pro  :whistle: )  
 
 :hello:  


---------------
grrrr
 
n°375850
sadicla
Profil : Inconnu(e)
Posté le 16-09-2007 à 10:56:27  profilanswer
 

OK merci quand même . Je vais continuer . Mon principal problème finalement, est que la formule mise dans ma feuille 2 =SI(A3="";"";RECHERCHEV(A3;descro;2;0)) ne me permet pas de modifier le texte amené . Pour le reste je peux me débrouiller. Je te remercie quand même d'avoir eu la patience .

n°375884
sadicla
Profil : Inconnu(e)
Posté le 18-09-2007 à 20:03:31  profilanswer
 

Bonjour à tous
 
Me revoila !  
J'avance dans mon projet, mais je crois que je suis en train de monter une sacrée usine à gaz .
Pour ceux qui n'aurait pas suivi ( eh oui je suis assez embrouillé ) sauf pour Chacha qui a, avec patience je l'avoue, essayer de m'aider, je récapitule ce que je veux faire :  
1 feuille avec :
colonne A = code
colonne B = descriptifs mis en forme ( je précise mise en forme car je voudrais en finalité retrouver                        cette présentation:à la ligne après chaque description )
1 seconde feuille avec :
une colonne A = saisie du code ci dessus
une colonne B = import du texte descriptif correspondant au code ( avec la fonction "RECHERCHEV" )
Cela fonctionne, mais je ne peux pas modifier le texte importé, car lorsque je l'édite, c'est la formule . J'ai donc fait une petite macro qui me fait un copier/collage spéciale "valeur", dans la cellule finale.
Comme j'ai prévu de faire un document d'environ 300 à 400 lignes, je suis en train de faire cellule par cellule une macro ( quel galère !! )
Un bout de ma macro :
Private Sub CommandButton1_Click()
    Range("G3" ).Select
    Selection.Copy
    Range("B3" ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B4" ).Select
End Sub
Private Sub CommandButton3_Click()
Range("G4" ).Select
    Selection.Copy
    Range("B4" ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B5" ).Select
End Sub
Private Sub CommandButton4_Click()
Range("G5" ).Select
    Selection.Copy
    Range("B5" ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B6" ).Select
End Sub
 
etc...etc...  
Avant de continuer plus loin, quelqu'un aurait-il une dernière idée ?

n°375885
sadicla
Profil : Inconnu(e)
Posté le 18-09-2007 à 20:22:54  profilanswer
 

Bon ma façon de faire ne va pas non plus, car je ne peux faire qu'une dizaine de macro ( sur bouton ) pas plus . Voilà, encore bloqué !!!!

n°375886
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 18-09-2007 à 20:39:43  profilanswer
 

chacha a écrit :

:o  hier soir j'étais sur une base de reflexion    
Sub copiechacha()
 
 For Each toto In Worksheets("chacha" ).Range("G3:G359" ).Cells
        If toto <> "" Then Selection = toto
        Selection.Copy
    Range("j3" ).Select  ' rajouter  une boucle ou un test, ou mettre en variable pour  déplacer cette cible)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
         Next
       
     End Sub  
et la ça a changé ce matin   :sweat:


 
 Il aurait été judicieux de faire  une boucle  comme celle que je t'ai proposé en premier  :sweat:  


---------------
grrrr
 
n°375887
sadicla
Profil : Inconnu(e)
Posté le 18-09-2007 à 20:45:47  profilanswer
 

chacha a écrit :

Il aurait été judicieux de faire  une boucle  comme celle que je t'ai proposé en premier  :sweat:


 
Salut Chacha
 
Ecoute je n'ai pas assez de connaissance en excel pour arriver à comprendre ta boucle . Je sais je m'éparpille . Ta boucle est peut-être la solution, mais.....

n°375888
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 18-09-2007 à 21:47:14  profilanswer
 

Citation :

Comme j'ai prévu de faire un document d'environ 300 à 400 lignes, je suis en train de faire cellule par cellule une macro ( quel galère !! )


 :non:  
 pour ne pas ecrire 500 fois la meme chose on fait une boucle  
  mais si maintenant je dois t'expliquer le fondement des macros c'est pas le but du jeu, les posts n'y suffiront pas   :sweat:   donc >>>> http://www.info-3000.com/vbvba/index.php
 
 :hello:


Message édité par chacha le 18-09-2007 à 21:47:47

---------------
grrrr
 
n°375889
sadicla
Profil : Inconnu(e)
Posté le 18-09-2007 à 21:57:57  profilanswer
 

Bon, j'ai compris, il faut que je prennes des cours de macros quoi ! C'est bien ce que je craignais .  
Je vais quand même chercher sur le Net une feuille excel toute faite gratuite, de saisie de devis . Pour l'instant je n'ai rien trouvé qui me convienne . Merci quand même et bonne nuit .

n°375890
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 18-09-2007 à 22:13:05  profilanswer
 

Je doutes que tu trouves un truc   en macro gratuit que quelqu'un aie fait et qui convienne  spécifiquement à ton application  sans un minimum de retouche... donc il faut comprendre comment ça marche et l'adapter  
 
 la logique que je t'ai proposé  
 

Citation :

1/ chercher le  champ clé    
2/ selectionner  une zone   définie et fixe comportants les champs descriptions .  
3/ copier cette zone  
4/ coller cette zone dans ta  feuille de destination a l'adresse  désirée.

 
est toute simple  et te permets de batir ton projet  en apprenant en meme temps  car rien ne vaut un probleme pratique concret pour  piger le truc ...


---------------
grrrr
 
n°375891
sadicla
Profil : Inconnu(e)
Posté le 18-09-2007 à 22:30:28  profilanswer
 

C'est un peu ce que j'ai fait avec RECHERCHEV, puis macro Copier / coller valeur ....

n°375892
sadicla
Profil : Inconnu(e)
Posté le 18-09-2007 à 22:34:13  profilanswer
 

Même si mes macros par lignes sont une usine à gaz, ça marche très bien jusqu'à "CommandButton9_Click()", après j'ai un message du genre " Nom ambigu détecté:"CommandButton10_Click()"

n°375893
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 18-09-2007 à 23:34:49  profilanswer
 

Sub copiechacha()
 
 For Each toto In Worksheets("chacha" ).Range("a1:a20" ).Cells
 
  Selection = toto
        Selection.Copy
    Selection.Offset(rowOffset:=1, columnOffset:=0).Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
         Next toto
       
     End Sub
 
 
 Tiens tu as une petite boucle qui te copie  des données de la colone A  sur 20 lignes  dans la colone  à coté  par exemple  ( ça peut etre dans une autre feuille )
 
 mais je ne crois pas que ce doit ce que tu veux


---------------
grrrr
 
n°375894
sadicla
Profil : Inconnu(e)
Posté le 19-09-2007 à 07:09:27  profilanswer
 

Si ,je peux utiliser cette boucle , enfin je vais essayer de l'adapter, mais quels termes faut-il rajouter pour lui dire de pas faire de copie ( pas de commande copie, je ne veux pas qu'il me copie "" )dans les cases non vides ( que j'utiliserai après pour saisir des titres )

n°375895
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 19-09-2007 à 08:25:44  profilanswer
 

 selection= toto  
 if toto= "" then next  
 end if
 
ou  
 
 if  toto <> ""
 contitnue sur copie
 else next toto
 
 


---------------
grrrr
 
n°375901
sadicla
Profil : Inconnu(e)
Posté le 19-09-2007 à 18:03:10  profilanswer
 

En fait se serait plutôt de lui dire à cette sacré macro :
" si il y a quelque chose dans les cellules de la colonne A ne recopie pas ( collage spéciale valeur ) les valeur de la même ligne se trouvant dans G, si non, recopie les valeurs des cellules de la même ligne ,de la colonne G dans la colonne B " Voilà il ne reste plus qu'a traduire en VBA !! Eh oui j'abuse ... mais qu'est que tu veux quand on a pas la formation , on ne l'a pas ... Je n'ai pas assez de temps devant moi pour me former, je dois être opérationnel le 1° octobre . Sans quoi je suis bon pour faire de la saisie .

n°375902
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 19-09-2007 à 18:46:12  profilanswer
 

As tu testé au moins   les deux possibilités  :??:  
  la ligne Si  dit  si la cellulle  sur laquelle tu es ne contient rien  continue la boucle  
 donc par défaut elle n'execute pas l'instruction de copie ....
 il y a 36 façons de le dire  :sweat:  
 
 Et puis bon je me rends compte que ton truc c'est de copier une colone dans une autre si je ne m'abuse  et je ne suis pas certain  que ça vaille le coup de se creuser la cervelle ( ou j'ai mal compris  >> c'est d'ailleurs toute la difficulté  quand on n'est pas devant l'application  :sleep: )
 Bon sinon  ce n'est pas en posant une question a droite a gauche par jour   en donnant peu d'infos utilisables  que tu vas avancer  pour le 1er octobre  :jap:  
 
 
 
 


---------------
grrrr
 
n°375903
sadicla
Profil : Inconnu(e)
Posté le 19-09-2007 à 19:29:34  profilanswer
 

Bien, vu le ton de ta réponse, je sens bien que tu en a marre . Je continuerai malgré tout à poser mes questions à droite et à gauche comme tu dis ! Je n'oblige personne à me répondre ! Je pensais qu'un Forum d'aide était fait pour tout public et tout niveau ! Désolé si je ne comprend pas tes explications . Maintenant je peux t'envoyer mon document Excel, comme ça tu verra peut-être mieux ce que j'ai fait, et sur quoi je butte.

n°375904
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 19-09-2007 à 20:10:41  profilanswer
 

Je n'en ai pas marre mais si  chaque fois que je te dis quelque chose  il faut expliquer en détail   :sweat:  je ne suis pas prof de VBA , je veux bien discuter de telle ou telle routine et  expérimenter pour optimiser  :jap:  
Que t'envoie ton document que je me fasses une idée pour t'aider  a avancer  oui  !   mais  je te fasses ta macro ne m'interesse nullement   !!!  

Citation :

As tu testé au moins   les deux possibilités  :??:

  tu ne réponds pas a la question   et tu rales !!!  
 


---------------
grrrr
 
n°375906
sadicla
Profil : Inconnu(e)
Posté le 19-09-2007 à 20:25:31  profilanswer
 

Pour les 2 petites conditions , oui !! j'ai essayé de tester . Mais je bloque sur vraiment ce qui est de plus basique pour toi en VBA, mais qu'est ce  
que tu veux , une nouvelle langue ne s'apprend pas comme ça . Quand a t'envoyer mon document pour que tu me fasse la macro , ce n'était pas le but recherché, cela fait plusieurs semaines maintenant que je m'y colle, c'est pas pour laisser faire quelqu'un d'autre à ma place . Je tiens malgré tout à comprendre ce qui se passe . Et puis à l'utilisation, il n'est pas impossible que d'autres problèmes arrivent ou que j'ai envie d'améliorer encore un peu ce document . Alors que fait-on ? Je t'envoie ou pas mon document ? Si oui il me faut ton Mail ou je te donne le mien avant ...

n°375907
chacha
Inventeur de Rien .....
Profil : Star du forum
Posté le 19-09-2007 à 21:31:44  profilanswer
 

Regardes mon profil ...


---------------
grrrr
 
n°375908
laripette
Bouffon, paraît-il ....
Profil : Star interplanétaire
Posté le 19-09-2007 à 21:39:21  profilanswer
 

sadicla a écrit :

Bien, vu le ton de ta réponse, je sens bien que tu en a marre


 
Cool, Zen, sadicta (  :hello:  ) ChachA te consacre du temps, de son temps ...  ;)  


---------------
[:laripette]  
---------------
laripette ? bof ... Sur moi, les avis divergent. Oui, je sais, pour Apollinaire c'était 11.000, pas dix ...

Aller à :
Ajouter une réponse
 


Hit-Parade des sites francophones