Macro excel

pascalbg Messages postés 6 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 17 février 2007 - 15 juin 2006 à 23:06
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 20 juin 2006 à 22:34
Bonjour,
 
Je me lance dans les macros EXCEL et connais très sommairement VB
 
Je cherche simplement à faire une macro qui va lire le contenu d'une cellule (H3)
Si cette cellule est égale à 0, la macro s'arrête
Si cette cellule contient une adresse (cellule d'une autre feuille, par exemple B100), le curseur doit se positionner dans cette cellule sur la feuille nommée "emplacements") et copier la cellule H2 de la feuille nommée "saisie" et le curseur doit se décler une cellule à droite
Fin de la macro

Simple pour quelqu'un qui connait le VB?
 
Merci pour votre aide

8 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
16 juin 2006 à 00:47
Salut,
Un petit bout de code pour te faire les dents.
y'a d'autres moyens bien sur

 Private SubCommandButton1_Click()

  ' ceci pour simplifier le code

  Dim Myrange As Range

  Set Myrange = Sheets("Feuil1").Range("H3")

  ' Si rien dans la cellule on sort

  If Myrange.Value = "" Then

    Exit Sub

  Else

    ' On intercepte une éventuelle erreur si la valeur de la cellule

    ' n'est pas une réfèrence valide

    On Error GoTo CommandButton1_Click_Err

    ' Le With évite de réécrire une partie du code et

    ' accélère celui-ci

    With Sheets("emplacements")

      ' On sélectionne la feuille

      .Activate

      ' Si la valeur de la cellule n'est pas une référence valide le code plante ici

      .Range(Myrange.Value).Select

      On Error GoTo 0

      ' Si tout est bon on copie la valeur de H2

      .Range(Myrange.Value).Value = _

          Sheets("saisie").Range("H2").Value

      ' Enfin on sélectionne la cellule de droite

      .Range(Myrange.Value).Offset(0, 1).Select

    End With

  End If

CommandButton1_Click_End:

 

Exit Sub

CommandButton1_Click_Err:

  MsgBox

"la valeur de la cellule : " & Myrange.Address & " = " & """" & Myrange.Value & "" »

"" & vbCrLf & _      

" N'est pas une réfèrence de cellule valide", vbCritical + vbOKOnly, _      

"Erreur de l'application"

 

' On se positionne sur la cellule H3 de la feuille 1  

Sheets("feuil1").Activate   Myrange.Select

 

GoTo CommandButton1_Click_End

End Sub

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
16 juin 2006 à 07:57
Bonjour,

Le plus simple, clique sur outil\macro\enregistrement, lance l'enrtegistrement fait ce que tu souhaite que ta macro fasse  et regarde le code.

Tu connaitras la syntaxe vb pour pouvoir ensuite travailler correctement.

-- Pourquoi faire simple quand on peut faire compliquer --
0
pascalbg Messages postés 6 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 17 février 2007
16 juin 2006 à 08:08
Bonjour VALTRASE,

je ne comprends pas tout mais je vais le tester

Merci
0
pascalbg Messages postés 6 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 17 février 2007
16 juin 2006 à 08:12
ELDIM,

je vois qu'il y au moins une personne qui connait moins les macros sous excel que moi !!!

Je sais faire depuis longtemps ce que tu me réponds mais cela ne solutionne pas mon problème (ADRESSAGE INDIRECT).
 
Merci de me trouver une solution plus concrête.

PASCALBG
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
16 juin 2006 à 09:01
lol je connais beaucoup plus les macros que toi...
depuis le temps que je fais des prog sous excel... MDR
if range("H3").value <> 0 then
   dim S as string
   s=range("H3").formula
   if left$(s,1)="=" then
      range(right$(s,len(s)-1)).select
   endif
endif

LOL
-- Pourquoi faire simple quand on peut faire compliquer --
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
16 juin 2006 à 20:02
Re,
Pascalbg, si t'as besoin d'explications n'hésites surtout pas !!!!
eldim dans ton code tu ne fait pas la copie et à mon humble avis ce n'est pas dans le .Formula qu'il doit chercher la valeur .... Sinon oui c'est une autre solution j'ai donné ce code pour qu'il puisse se familiariser avec certaines astuces de VBA

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
pascalbg Messages postés 6 Date d'inscription jeudi 15 juin 2006 Statut Membre Dernière intervention 17 février 2007
20 juin 2006 à 20:48
A valtrase :
Je n'ai pas compris la syntaxe mais cela marche et c'est l'essentiel. Je vais me pencher dessus dès que possible mais actuellement, je n'ai pas trop le temps.

A eldim :
Je ne voulais pas te blesser mais ta solution initiale ne me permettait pas de résoudre mon problème. Je promets de tester ta solution.

J'ai un autre souci :
En fonction de la valeur d'une cellule (A1 par exemple) je veux imprimer les cellule B1 à B3 (si A1=1), B1 à B6 (si A1=2) ou B1 à B9 (si A1=3)

Merci pour vos solutions
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
20 juin 2006 à 22:34
Re,
pour l'impression plusieurs solutions à toi de choisir
 Private Sub CommandButton1_Click()

  Dim MySht As Worksheet
  Set MySht ActiveSheet ' Ou par ex: Sheets("Feuil1")

  With MySht

    ' Tu peux utiliser soit l'impression direct soit

    ' de passer par une zone d'impression à toi de choisir

    Select Case .Range("A1").Value

    Case 1

      '.PageSetup.PrintArea = "$B$1:$B$3"

      .Range("B1:B3").PrintOut

    Case 2

      '.PageSetup.PrintArea = "$B$1:$B$6"

      .Range("B1:B6").PrintOut

    Case 3

      '.PageSetup.PrintArea = "$B$1:$B$9"

      .Range("B1:B9").PrintOut

    Case Else

      ' Ici un message si "A1" est vide

      Exit Sub

    End Select

    '.PrintOut 'Utilisé avec PrintArea

    '.PageSetup.PrintArea = "" ''Utilisé avec PrintArea

  End With

End Sub

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous