Macro excel

Signaler
Messages postés
6
Date d'inscription
jeudi 15 juin 2006
Statut
Membre
Dernière intervention
17 février 2007
-
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
-
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

Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
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 --
Messages postés
6
Date d'inscription
jeudi 15 juin 2006
Statut
Membre
Dernière intervention
17 février 2007

Bonjour VALTRASE,

je ne comprends pas tout mais je vais le tester

Merci
Messages postés
6
Date d'inscription
jeudi 15 juin 2006
Statut
Membre
Dernière intervention
17 février 2007

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
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
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 --
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é
Messages postés
6
Date d'inscription
jeudi 15 juin 2006
Statut
Membre
Dernière intervention
17 février 2007

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
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
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é